C#顶级语句

从C#9开始,无需在控制台应用程序中显示包含Main方法,相反可以使用顶级语句功能最大程度的减少样板代码的代码量,在这种人情况下,编译器将为应用程序生成类和Main方法入口点

下面是Program.cs文件,它是一个完成的C#程序

Console.WriteLine("Hello World!");

借助顶级语句,可以为小实用程序(如 Azure function 和 GitHub Action)编写简单的程序,它们还使初次接触C#程序的程序员能够跟轻松的开始学习和编写代码

只能有一个顶级文件

一个应用程序只能有一个入口点,一个项目只能有一个包含顶级语句的问价,在项目中多个文件中放置顶级语句会导致编译错误

没有其他入口点

可以显示编写 Main 方法,但它不能作为入口点,编译器将发出警告

在具有顶级语句的项目中,不能使用 -main 编译器选项来选择入口点,即时该项目具有一个或多个Main方法

using 指令

如果包含 using 指令,咋它们必须首先被声明,

using System.Text;

StringBuilder builder = new();
builder.AppendLine("Hello");
builder.AppendLine("World!");

Console.WriteLine(builder.ToString());

全局命名空间

顶级语句位于全局命名空间中

命名空间和类型定义

具有顶级语句的文件还可以包含命名空间和类型定义,但它们必须位于顶级语句之后

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!");
        }
    }
}

args

顶级语可以引用 args 变量来访问输入的任何命令行参数,args 变量永远不会为null,但如果未提供任何命令行参数,则 length 为0 ,例如

if (args.Length > 0)
{
    foreach (var arg in args)
    {
        Console.WriteLine($"Argument={arg}");
    }
}
else
{
    Console.WriteLine("No arguments");
}

await 可以通过使用 await 来调用异步方法

Console.Write("Hello ");
await Task.Delay(5000);
Console.WriteLine("World!");

进程的退出代码

若要在应用程序结束时返回 int 值,请像在 Main 方法中返回 int 那样使用 return 语句。 例如:

string? s = Console.ReadLine();

int returnValue = int.Parse(s ?? "-1");
return returnValue;

隐式入口点方法

编译器会生成一个方法,作为具有顶级语句的项目的程序入口点,此方法的名称实际上并不是Main,而是代码无法直接引用的实现细节,方法的签名取决于顶级语句是否包含 await 关键字还是return 语句,下表显示了方法签名的外观,为了方便起见,在表中使用了方法名称 Main

顶级代码包含隐式 Main 签名
awaitreturnstatic async Task<int> Main(string[] args)
awaitstatic async Task Main(string[] args)
returnstatic int Main(string[] args)
awaitreturnstatic void Main(string[] args)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值