我试着public void Main()在C#中创建; 它说没有静态空洞主要发现.静态
到底意味着什么Main?我知道代码可以正常工作public static void Main().
但为什么Main必须这样static?
Tho*_*son 56
你需要一个进入你的程序的入口点.静态意味着您可以在不必实例化类的对象/实例的情况下调用该函数.它有点"鸡蛋和鸡蛋"......你不能在进入程序之前实例化一个对象.
可以在不实例化对象的情况下调用静态方法.因此,main()需要保持静态才能使其成为程序的入口.
正如David所说,您只需将关键字添加static到函数定义中即可进行更改.值得研究静态(类)方法与实例方法,并且知道差异有时会很有用.
Leo*_*ruz 18
只有静态main方法才能完成这项工作,因为有一个定义此行为的约定.没有其他原因.
看一下C#语言规范:
当执行环境调用指定的方法(称为应用程序的入口点)时,将发生应用程序启动.此入口点方法始终命名
Main,并且应具有以下签名之一:Run Code Online (Sandbox Code Playgroud)static void Main() {…} static void Main(string[] args) {…} static int Main() {…} static int Main(string[] args) {…}如图所示,入口点可以选择返回一个
int值.此返回值用于应用程序终止(第10.2节).
注:以上引自4 个版,现在标签的"历史".目前的版本措辞不同.
除此之外,名称Main可以更改为其他名称.在这种情况下,必须添加编译器选项,告诉C#编译器将不同的方法标记为程序的入口点.
小智 5
一个类中有两种类型的方法:
// Example of static and non-static methods and how to call
namespace TestStaticVoidMain
{
class Program
{
Static Void Main(string[] args)
{
// Instantiate or create object of the non-static method:
Exam ob = new Exam();
// Call the instance:
ob.Test1();
// Directly the call the static method by its class:
Exam.Test2();
Console.ReadKey();
}
}
class Exam
{
public void Test1()
{
Console.WriteLine("This is a non-static method");
}
public static void Test2()
{
Console.WriteLine("This is a static method");
}
}
}
Run Code Online (Sandbox Code Playgroud)
1.静态方法:
要调用静态方法(函数),我们不需要实例化或创建该方法的对象。我们不能使用new关键字,因为在加载和编译类时,static关键字默认实例化或创建该类方法的对象,这就是我们直接调用静态方法的原因。
关于static void Main(string[] args),我们已经讨论过了static。余数为void Main(string[] args)。void是一种不返回任何内容的数据类型。Main()是执行 C# 程序的标准入口点。可选参数string[] args接收程序运行时使用的可选“命令行”参数。
2. 非静态设置:
要调用非静态方法,我们必须实例化或创建类方法的对象,以使用关键字 调用类的方法(函数)new。
如果一个名为的类Test有一个名为的非静态方法show(),那么它将如何调用实例:
// to call non-static method
Test ob=new Test();
ob.show();
Run Code Online (Sandbox Code Playgroud)