没有main方法的C#类



我正在学习C#,而且我对它很陌生,所以请原谅我这个看似愚蠢的问题。我在Java方面有一些经验,我注意到C#程序在其主类中也需要一个main()方法。

如果我想创建一个不是主类的类,即导入到主类中的类,该怎么办?

我尝试过这样做,当我编译(通过使用csc File.cs的cmd)时,编译器说它将生成的.exe没有main()方法。这是否意味着我错了,每个类都需要一个main()方法,或者我编译错误了?

也许问题出在代码中(因为我依赖于Java语法知识),它看起来像这样:

public class Class
{
    int stuff;
    public Class(int stuff)
    {
        this.stuff = stuff;
        stuff();
    }
    public void method()
    {
        stuff();
    }
}

编辑:恐怕这被误解了。我不是问这个文件是否需要main方法,而是问我如何将这个类导入到另一个类中,因为我意识到如果要这样做,我就不能有main(正如我所说,我有一些Java经验),但每当我试图在没有main方法的情况下编译时,编译器告诉我需要main方法。


##并非所有类都需要"Main"方法。

MSDN声明

Main方法是C#控制台应用程序或windows应用程序。(图书馆和服务不需要Main方法作为入口点。)。当应用程序启动时,Main方法是调用的第一个方法。

一个C#程序中只能有一个入口点。如果你有更多多个具有Main方法的类,则必须编译程序使用/main编译器选项指定要用作的main方法入口点。


只有一个类需要保留Main方法,该类充当应用程序的入口点。

主要方法的签名为:static void Main(string[] args)static void Main()static int Main(string[] args)static int Main()

查看此链接了解更多详细信息:Main() and Command-Line Arguments (C# Programming Guide


例如:

public class MyClassName // changed the class name, avoid using the reserved keyword :P
{
    int stuff;
    public MyClassName(int stuff)  // is the constructor
    {
        this.stuff = stuff;
    }
    public void method()
    {
        stuff = 1;
    }
}

如果您需要使用该类,您可以使用main方法创建一个静态类:

class ProgramEntry
{
    static void Main(string[] args)
    {
        MyClassName classInstance = new MyClassName(2);
        classInstance.method();
    }
}

启动C#9时,引入了一个没有Main方法的程序选项。现在,您可以直接在类之外的文件中编写代码,而不必声明Main方法。有关更多详细信息,请参阅顶级语句-不带Main方法的程序。

在这种情况下,您的代码中至少需要一个包含Main方法的类。其他类不需要Main方法。

C#应用程序必须至少有一个带有Main方法的类,这样才能从它开始执行。应用程序可以有很多类,但只需要一个带有一个Main方法的类别。

C#不必有Main方法。

如果这是一个控制台应用程序,则需要从Main方法开始。否则(例如web应用程序),您就不需要了。

尝试在编译器中使用/t:library开关。默认情况下,它会尝试生成一个.exe,当然,它需要一个入口点(即main方法)。如果您编译到.dll,则不需要它。

但正如HighCore建议的那样,如果你正在学习,只需使用Visual Studio(如果你还没有下载免费版本,请下载其中一个),让它担心编译器标志。

构建可执行程序集(.exe)时只需要main方法,并且只需要在一个类中使用它。此方法将是开始执行的默认入口点。当您将代码构建为类库(.dll)时,不需要main方法。

只有一个类和一个方法就可以了。如果需要,可以在visual studio中的设置中设置启动对象。

C#类不带Main()意味着,您可以将其编译为库(.dll)csc/target:library YourClassFileName.cs或csc/t:library Your ClassFileName.cs将其作为YourClassFileName.dll文件,然后您可以在另一个具有Main()方法(入口点)的类文件中使用它

csc/reference:YourClassFileName.cs YourMainClassFileName.chs或csc/r:YourClassFileName.cs YourMainClassFileName.chs

使YourMainClassFileName.exe文件

static void main(string[] args)方法在C#程序中是执行的起点。如果你试图编译一个C#文件,编译器会找到这个方法来开始执行。您不需要在用作模型的类中创建方法,但必须在控制台程序、WinForms等上使用此方法。

Main是必需的,但C#9具有此功能,因此您不会编写Main,但它将充当Main。

在C#9.0中,您可以选择在顶级级别编写主程序:

using System;
Console.WriteLine("Hello World!");

允许任何语句。程序必须出现在usings之后,文件中的任何类型或命名空间声明之前,并且只能在一个文件中执行,就像现在只能有一个Main方法一样。

如果你想返回一个状态代码,你可以这样做。如果你想等待,你可以这样做。如果您想访问命令行参数,args可以作为"魔术"参数使用。

局部函数是一种语句形式,在顶级程序中也允许使用。从顶级语句部分之外的任何位置调用它们都是错误的。

参考:https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/#top-级别程序

相关内容

  • 没有找到相关文章

最新更新