若要在应用程序结束时返回 int
值,请像在 Main
方法中返回 int
那样使用 return
语句。 例如:
string? s = Console.ReadLine();
int returnValue = int.Parse(s ?? "-1");
return returnValue;
隐式入口点方法
编译器会生成一个方法,作为具有顶级语句的项目的程序入口点,此方法的名称实际上并不是Main,而是代码无法直接引用的实现细节,方法的签名取决于顶级语句是否包含 await 关键字还是return 语句,下表显示了方法签名的外观,为了方便起见,在表中使用了方法名称 Main
顶级代码包含 | 隐式 Main 签名 |
---|
await 和 return | static async Task<int> Main(string[] args) |
await | static async Task Main(string[] args) |
return | static int Main(string[] args) |
否 await 或 return | static void Main(string[] args) |
1 背景与动机
通常,如果只想用C#在控制台上打印一行“Hello World!”,这可不是Console.WriteLine(“Hello World!”);一条语句就可以搞定的,还涉及到其他必要基础代码(如定义类和入口函数Main),例如下面:
using System;
class Program
static void Main()
Console.WriteLine(Hello World!);
就打印一句“Hello World!”,就这么多代码。这个不仅对于初学者来说麻烦,而且使得代码凌乱,并且增加了缩进层级。为了解决这些问题,就提出了顶
3.顶级语句中不仅可以写基本的表达式,也可以在顶级语句中定义方法,然后调用它(局部方法,方法内部定义的方法)。具有顶级语句的文件可以包含命名空间和类型定义,但它们必须位于顶级语句之后。5.在顶级语句中可以使用return返回一个int类型返回值。6.顶级语句隐式位于全局命名空间中(可以直接创建对象)(2)顶级语句:编译到Main方法中的代码。(3)类/命名空间(必须位于顶级语句之后)4.在顶级语句中可以使用args来获取命令。(1)using语句:引入命名空间。2.只能有一个顶级语句文件。
从 C# 9 开始,无需在控制台应用程序项目中显式包含 方法。 相反,可以使用顶级语句功能最大程度地减少必须编写的代码。 在这种情况下,编译器将为应用程序生成类和 方法入口点。下面是一个 Program.cs 文件看,它是 C# 10 中的一个完整 C# 程序:
注意点:参考:Microsoft C# 顶级语句...
顶级语句这个名字看起来不是那么直观,或许它的曾用名更好一些:Simple Programs,简单程序。
想必大家都知道,即使是最简单的 C# 程序,也会有一定量的繁文缛节,因为最少也需要一个 Main 方法。这似乎妨碍了语言的学习和程序的清晰度。因此,这个特性的最主要目的就是为了初学者和代码的清晰度,让书写 C# 程序可以变得更轻松。
语法 Spec 如下,允许在命名空间的声明前面,添加一组语句,且只允许有一个编译单元(可以认为是一个源文件
1 背景与动机
通常,如果只想用C#在控制台上打印一行“Hello World!”,这可不是Console.WriteLine("Hello World!");一条语句就可以搞定的,还涉及到其他必要基础代码(如定义类和入口函数Main),例如下面:
using System;
class Program
static void Main()
Console.WriteLine("Hello World!");
就打印一句“Hello World!”.
WebApi 的套路还是很直白的,入门还是比较简单。一个顶级文件Program.cs负责初始化配置工作,再配上几个控制器,就能写出微服务了。今天介绍两个小技巧:1 如何将变量注入到控制器2 配置文件的读取。
以下是C#中最有价值的10个语法糖:自动实现属性使用自动实现属性,可以简化属性的定义和实现,不需要显式地编写字段和访问器。例如:publicstringName{get;set;}空值合并运算符使用空值合并运算符,可以简化判断空值的代码。例如:stringname=null;
stringdefaultName="John";
stringresult=name??...
Program.cs文件在我们创建ASP.Net Core项目时自动生成。
这段代码中,通过使用CreateDefaultBuilder()函数创建并运行了一个虚拟网站托管主机WebHost。我们再看看CreateDefaultBuilder()函数具体做了哪些事情
加载主机和应用程序的配置信息
配置日志记录
设置Web服务器
设置Asp.Net Core应用程序的托管形式
根据顶级语句语法,顶级语句文件中存在隐式 using 指令, 但如果我们需要在 Program.cs 文件中额外引入一些命名空间也是可以的,using 语句需要在文件的最前面,也可以定义方法或者类,只不过需要在顶级语句的后面,也可以使用异步方法。从代码中可以看到,在对主机进行配置的时候,使用到了 Startup 类,在 .NET 6 之前的版本,Startup 类承担应用的启动任务,是应用配置的主要地方。○ 该方法内中间件的注册顺序与代码的书写顺序是一致的,先注册的先执行,后注册的后执行。