在Main方法中调用函数

时间:2014-06-22 06:02:17

标签: c# function call

为什么运行此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对象的情况下运行时没有错误?

2 个答案:

答案 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文本以反映被调用的函数。