C# 9.0 Top-level statements

概述

Top-level statements开始于C#9.0,你不需要在一个console应用程序里显示声明Main方法,大大减少代码量。

原代码:
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

现代码:
using System;

Console.WriteLine("Hello World!");

使用条件

1、一个程序有且仅有一个入口,故Top-level statements也应该只有一个。
	CS8802 Only one compilation unit can have top-level statements.
2、声明了*语句之后,可以显示声明个Main方法,但是该Main方法不能作为程序的入口,否则会报错。
	CS7022 The entry point of the program is global code; ignoring 'Main()' entry point.
3、一个文件中可以有*语句、namespace和类型定义,但是*语句必须在最前面。
    MyClass.TestMethod();
    MyNamespace.MyClass.MyMethod();

    public class MyClass
    {
        public static void TestMethod()
        {
            Console.WriteLine("Hello World!");
        }

    }

    namespace MyNamespace
    {
        class MyClass
        {
            public static void MyMethod()
            {
                Console.WriteLine("Hello World from MyNamespace.MyClass.MyMethod!");
            }
        }
    }

对比

Top-level code contains Implicit Main signature
await and return static async Task<int> Main(string[] args)
await static async Task Main(string[] args)
return static int Main(string[] args)
No await or return static void Main(string[] args)
上一篇:MySQL-5.7-8.2.1 Optimizing SELECT Statements(优化SELELCT 语句)


下一篇:PL/SQL数据类型、控制语句