为什么我需要一个包装类?C#

Non*_*biz 0 c# program-entry-point class word-wrap

我有一个长度很长的程序,有一个类和很多方法.除了using语句之外,所有这些都必须包含在一个包含整个文件的巨大类中.这个庞大的包装类的必要性似乎毫无意义,这是在以后制作一个包含多个文件的程序时使用的吗?

    using System;
    using System.IO;
    using System.Text.RegularExpressions;
    using System.Collections.Generic;
    using System.Linq;

    public class CollectKeywordsFromLogs // why do I need this ( when it is the only class [as i just added the test class for the question])
    {

    //a class
        //constructor
        //methods

    //methods

    public static void Main()  // and why would i need to explicitly declare this public? it works either way, and a private main would be useless no?
    {}

    }
Run Code Online (Sandbox Code Playgroud)

这是我的完整档案.我编译csc file.cs然后编译file.exe.

哦,对,区分大小写.谢谢.但仍然 - >为什么我不需要使用测试类时的包装类?

Cha*_* Im 6

C#中没有全局方法或变量.它们必须位于类声明(如类或结构)中.这也适用于Main()方法.

Eric Lippert对SO问题发表了一个很好的答案,为什么C#不允许像C++这样的非成员函数,并在他的博客中进一步跟进:为什么C#不实施"顶级"方法?

您还可以找到以下MSDN链接:C++和C#之间的比较

Main()方法是C#程序的入口点.程序中应该只有一个入口点,但是,程序中可以有多个包含Main()方法的类.但是,如果您有多个Main方法,则应通过使用编译器选项/main编译程序来指定要用作入口点的Main方法.

Main()方法必须static且不应该public根据MSDN.默认情况下,VS2008将Main()创建为静态私有,运行时可以毫无问题地调用它.您可以将其更改为public,它将编译正常.但是,我认为这是非常尴尬的,因为你不能阻止其他类调用Main(),因为它是公共的.

有关Main方法的详细信息,您可以看到以下MSDN文章:Main()和命令行参数(C#编程指南)