新的 C# 模板生成顶级语句
一. . NET 6模板生成顶级语句
从 .NET 6 Preview 开始,控制台应用模板生成以下代码:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
新的输出使用最新的 C# 功能,这些功能简化了需要为程序编写的代码。 通常,控制台应用模板生成以下代码:
在之前 创建控制台是会生成下面代码:
using System;
namespace ConsoleApp3
class Program
static void Main(string[] args)
Console.WriteLine("Hello World!");
其实 在net5.0 (C# 9.0)已经支持顶级语句,只是生成模板的时候仍然有main方法
net 5.0 可以这样简化:
using System;
Console.WriteLine("Hello World!");
只是到.net6.0(C#10.0)模板使用新程序更简单的顶级语句、全局
using
指令和隐式
using
指令 。
顶级语句
意味着编译器会为主程序生成命名空间、类和方法元素。 你可以查看新应用程序的代码,并假设它包含早期模板所生成的
Main
方法内的语句。 你可以向程序添加更多语句,就像用传统方式将更多语句添加到
Main
方法一样。 甚至可以添加函数。 它们被创建为嵌套在生成的
Main
方法中的本地函数。
全局
using
指令意味着编译器会根据项目类型自动导入一组
using 指令。 对于控制台应用程序,以下指令隐式包含在应用程序的每个源文件中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Json;
其他应用程序类型包括更多对这些应用程序类型通用的命名空间。
这两种功能可简化构成应用程序的代码。 若要按照现有教程操作,请将所有新语句添加到模板生成的 Program.cs 文件中。 假设在本教程的说明中,你编写的语句位于
Main
方法中的左大括号和右大括号之间。
如果你更喜欢使用较旧的格式,则可以复制本文第二个示例中的代码,并像以前一样使用。
二.简化后的args
对于包含顶级语句的单个源文件,编译器会将
args
识别为表示命令行参数。 参数的类型是一个
string[]
,就像在所有 C# 程序中一样。
Console.WriteLine();
foreach (var s1 in args)
Console.Write(s1);
Console.Write(' ');
Console.WriteLine();
Console.WriteLine(args);
Console.ReadKey();
三.底层看看:
Console.WriteLine($"Mtehod Name:{System.Reflection.MethodBase.GetCurrentMethod().Name}");
Console.WriteLine($"Mtehod Name:{System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name}");
Console.WriteLine($"Mtehod Name:{System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace}");