我有一个长度的程序,具有课程和许多方法。所有这些都必须包含在一个巨大的类中,除了使用语句外,还必须包装整个文件。该巨大包装类的必要性似乎毫无意义,这仅在用多个文件制作程序时才会使用?

    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?
    {}

    }

这是我的完整文件。我编译csc file.cs然后file.exe。

哦,杜,案件敏感。谢谢。但是仍然 - >当NOTT使用测试类时,为什么我需要包装类?

有帮助吗?

解决方案

C#中没有全局方法或变量。它们必须在类型声明中,例如类或结构。这也适用于main()方法。

埃里克·利珀特(Eric Lippert) 在这样的问题上发布了一个很好的答案, 为什么C#不允许诸如C ++之类的非会员功能, ,进一步跟进 他的博客: C#为什么不实现“顶级”方法?

您还可能发现以下MSDN链接有用: C ++和C#的比较

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

主()方法必须是 static 而且不应该 public 根据 MSDN. 。默认情况下,VS2008将Main()作为静态私有创建,并且运行时可以在没有任何问题的情况下调用它。您可以将其更改为 public 而且它会汇编正常。但是,我认为这确实很尴尬,因为您无法阻止其他类别呼叫Main(),因为它是公开的。

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

其他提示

在C#中应该是主要的<---资本M:D

在我看来,当您应该使用一个时,您正在使用课 名称空间.

除此之外...在C#中,所有代码都必须在某种类中。例外是很愚蠢的 Main() 方法。

私人 Main() 顺便说一句,实际上可以作为程序切入点工作。

一个主必须具有正确的签名才能被识别为程序启动方法。这意味着您每堂课只能有1个。您可以每个程序有超过1个程序,可以选择应在编译器命令行或Project | properties |应用程序中提供主的类(查找ComboBox'startup Object')。

那个大阶级听起来很奇怪,您能显示您的意思的轮廓吗?一个猜测,你不是很困惑 classnamespace 这里?

添加

响应您的编辑,在C#中 每一个 包括主要的方法必须在课堂上。看 这个帖子. 。根据定义,主的签名是

public static void Main(string[] args) { }

尽管允许您省略ARGS参数。在您的情况下,命令行是:

csc /main:CollectKeywordsFromLogs  file.c

删除 /main时有默认规则规则

C#使用基于类的对象的编程范例,全局变量属于其他范式,例如程序编程;看一看 这里 有关编程范式的文章。没错,某些面向对象的编程语言,尤其是C ++,支持全局变量,但不支持C#(这是一个很好的Thiing IMO:O))。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top