在C#控制台应用程序中,public static void Main()和private static void Main()有什么区别?

时间:2014-02-19 04:33:20

标签: c# console-application

之间有什么区别
public static void Main()

private static void Main()

在C#控制台应用程序中?具体来说,它与Main()方法有关(我理解publicprivate之间的差异。)

10 个答案:

答案 0 :(得分:62)

要充当应用程序的起点,Main方法不一定是public

如果您决定将其设为public,则可以从其他类或程序集中调用它。通常,您不需要这样做,因此您可以保留private

使其成为public的一个可能用例是允许自动化测试调用它。

答案 1 :(得分:22)

两者之间的差异是publicprivate访问修饰符的唯一区别,因为两者都是有效的。这完全取决于应用程序的使用情况。

如果您想通过任何外部程序启动入口点(即用作API,用于测试目的),那么您可能需要将其公开以便可以访问。

  

public

如果您知道应用程序没有外部使用,那么最好将其设置为私有,这样外部应用程序就无法访问它。

  

private

答案 2 :(得分:11)

对于大多数用途,它没有任何区别。 微软主张将Main设为私有。

这样做的唯一真正价值(据我所知)是它会阻止Main方法被另一个应用程序的代码库直接调用。

可以对here

进行详细讨论

答案 3 :(得分:6)

除了普通的公共和私人访问修饰符功能外,什么都没有。两者都是有效的切入点。

请参阅:Why is the entry point allowed to be private?Why is Main method private?

答案 4 :(得分:4)

当它是私有的时,main被标记为exe本身执行的入口点,所以外面的任何东西都无法访问它

将其公开将使该方法可以从外部访问

阅读更多说明  http://social.msdn.microsoft.com/Forums/vstudio/en-US/9184c55b-4629-4fbf-ad77-2e96eadc4d62/why-is-main-in-c-not-a-public-static-?forum=csharpgeneral

答案 5 :(得分:3)

有区别,因为第一个是公开的,第二个是私有的,所以当你尝试从课外使用第一个时,它可以正常工作,但不适用于第二个。 / p>

但是,如果您尝试在应用程序中创建其中一个入口点,则没有区别。 入口点方法可以是公共的也可以是私有的,无关紧要。

答案 6 :(得分:2)

public和private是访问说明符。

我们使用,

 public static void Main()

因为要执行该程序,您需要调用存在此Main()方法的类,因为您需要将Main()方法公开,否则将无法在类外部访问。

它之所以是静态的,是因为它需要在不创建该类的任何对象的情况下进行访问。在班级。

答案 7 :(得分:2)

私有或公共语句是它的访问修饰符,私有访问修饰符使外部对象无法访问,公共访问修饰符使外部对象可以访问它。示例用法:

假设我们有一个班级:

class myClass{
    public void test(){
        //do something
    }
}

我们创建该类的实例:

myClass mClass=new myClass();

要访问它的成员函数,你会去:

mClass.test();

如果它有一个私有访问修饰符,你会收到一个编译错误,说它无法访问。

为了知识,为了在不创建类实例的情况下访问成员,您还要将该成员设置为静态,例如:

class myClass{
    public static void test(){
        //do something
    }
}

现在要访问它,你只需要执行:

myClass.test();

(请注意,在静态成员中访问的任何成员也应该是静态的)

答案 8 :(得分:1)

基于访问级别。

private--> access to own class
public --> open to alll

答案 9 :(得分:1)

例如,当您想要添加可以从类或程序集外部调用的入口点时,您应该设置public,但如果它不是importatnt,请使用private