为什么运行此C#代码会在Main中的F1();
显示错误?
namespace Project1
{
public partial class Program1
{
private void F1()
{
Console.WriteLine("F2");
}
private void F2()
{
Console.WriteLine("F1");
}
static void Main(string[] args)
{
F1();
}
}
}
这是一个控制台应用程序。如果我定义类Program1
的对象,它就可以工作。
但是,当我在Windows窗体应用程序上尝试此操作时,我可以将F1();
置于button_click
事件中,并且在没有定义Class Form1
对象的情况下运行时没有错误?
答案 0 :(得分:3)
您尚未将方法定义为static
。因此,您需要先创建类的实例,然后使用该实例调用它们。
如果您想直接调用这些方法,可以将它们设为static
。在这种情况下,因为您似乎只是显示静态文本,所以这样做会很好。但是,通常,方法实际上需要对实例进行操作,因此必须这样调用。您可能需要查看this question,其中讨论了何时制作方法static
。
答案 1 :(得分:2)
以下是两种选择:
namespace Project1
{
public partial class Program1
{
private void F1()
{
Console.WriteLine("F1");
}
private void F2()
{
Console.WriteLine("F2");
}
static void Main(string[] args)
{
var program1 = new Program1();
program1.F1();
}
}
}
... OR
namespace Project1
{
public partial class Program1
{
static private void F1()
{
Console.WriteLine("F1");
}
static private void F2()
{
Console.WriteLine("F2");
}
static void Main(string[] args)
{
F1();
}
}
}
BTW,我更改了WriteLine文本以反映被调用的函数。