创建一个控制台项目,.net5或.net6(Preview),在Program.cs中写如下代码,F5,能顺利跑起来,没有Program类,没有Main函数。
这是C#9带来的顶级语句的功能。
System.Console.WriteLine("你好,C#");
其实这里的Program类和Main还是存在的,只是一种略写法,可以用如下代码看出来:
System.Console.WriteLine($"Method Name:{System.Reflection.MethodBase.GetCurrentMethod().Name}");
System.Console.WriteLine($"Class Name:{System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name}");
System.Console.WriteLine($"Namespace Name:{System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace}");
System.Console.WriteLine($"Assembly Name:{System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Assembly.FullName}");
System.Console.WriteLine($"Module Name:{System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Module.Name}");
与此同时,对args也是支持,直接访问就ok了
System.Console.WriteLine($"args长度{args.Length}");
同时也支持异步
await System.Threading.Tasks.Task.Delay(1000);
调用其他方法或类
System.Console.WriteLine(GetName());
System.Console.WriteLine(Test1.GetName());
System.Console.WriteLine(new Test2().GetName());
//静态方法
static string GetName()
return "桂素伟";
//静态类
class Test1
public static string GetName()
return "桂素伟";
//实例化类
class Test2
public string GetName()
return "桂素伟";
这种简略写法使用场景有限,但Faas是个场景,直接上来写功能,没有那么多条条框框。
.net知识以及常用热点面试题集合,目前已更新3500+篇文章,私我。包含以下:.Net (c笔记) 葵花宝典(基础).html
.NET 3行代码实现文字转语音功能.html
.NET 5 Preview 1的深度解读和跟进.html
.NET 5 System.Text.Json的用法详解.html
.NET 5 带来的新特性 [MemberNotNull] 与 [MemberNotNullWhen].html
.NET 5 中的正则引擎性能改进(翻译).html
.NET 5(.net core)会影响兼容性的变更.html
.NET 5.0 RC2 发布,正式版即将在 11 月 .NET Conf 大会上发布.html
.NET 5.0正式发布,功能特性介绍(翻译).html
.NET 5的时代快来了:【翻译】.NET 5 Preview8发布.html
.NET 5中的性能改进(英语差慎入).html
.NET 6 多线程的几种打开方式.html
.NET 6 基础:使用 ASP.NET Core 创建最小 Web API.html
.....字数有限
顶级语句这个名字看起来不是那么直观,或许它的曾用名更好一些:Simple Programs,简单程序。
想必大家都知道,即使是最简单的 C# 程序,也会有一定量的繁文缛节,因为最少也需要一个 Main 方法。这似乎妨碍了语言的学习和程序的清晰度。因此,这个特性的最主要目的就是为了初学者和代码的清晰度,让书写 C# 程序可以变得更轻松。
语法 Spec 如下,允许在命名空间的声明前面,添加一组语句,且只允许有一个编译单元(可以认为是一个源文件
当下的.Net新版本引进了几种新特性,包括全局命名空间引用、可空引用类型和顶级语句。这些特性在一定程度上改善了 .NET 平台的开发效率, 对于短小精干的小程序,这些新的特性无疑可以把开发效率提高到新的高度。正文1. .NET 7 中的全局命名空间引用特性可以在一个项目的全局范围内导入命名空间,从而减少代码中使用 using 指令导入命名空间的重复头部的工作。2. 可空类型(Nullable Type)是.NET中的值类型,在表示这些类型的变量时,允许变量持有 null 值。
1 背景与动机
通常,如果只想用C#在控制台上打印一行“Hello World!”,这可不是Console.WriteLine(“Hello World!”);一条语句就可以搞定的,还涉及到其他必要基础代码(如定义类和入口函数Main),例如下面:
using System;
class Program
static void Main()
Console.WriteLine("Hello World!");
就打印一句“Hello World!”,
定义常量的语句:const 数据类型 常量名称=值;
何为常量?
常量在程序的运行过程中是不会发生变化的量,如果在程序中强制修改它的值就会发生错误。如果想要修改它,只能在定义是修改。
常量的命名规范:常量的名称必须具有一定的实际意义。常量名称最好以大写字母来命名,
3.顶级语句中不仅可以写基本的表达式,也可以在顶级语句中定义方法,然后调用它(局部方法,方法内部定义的方法)。具有顶级语句的文件可以包含命名空间和类型定义,但它们必须位于顶级语句之后。5.在顶级语句中可以使用return返回一个int类型返回值。6.顶级语句隐式位于全局命名空间中(可以直接创建对象)(2)顶级语句:编译到Main方法中的代码。(3)类/命名空间(必须位于顶级语句之后)4.在顶级语句中可以使用args来获取命令。(1)using语句:引入命名空间。2.只能有一个顶级语句文件。
Main方法中首先创建ServiceCollection对象services,然后调用ConfigureServices方法来添加服务,并创建一个服务提供程序serviceProvider,在其生命周期内可以使用GetService方法获得需要的服务对象。同时,如果服务需要其他服务的支持,则必须在ConfigureServices方法中添加该服务的注册。.NET 6引入的依赖注入(DI)系统是.NET核心框架的一部分,它是一个轻量级的依赖注入容器,旨在帮助开发人员管理应用程序中的对象和其之间的依赖关系。