C#新语法
一、顶级语句(C#9.0开始)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// See https://aka.ms/new-console-template for more information Console.WriteLine("Hello, World!");
1、一个项目中只能有一个顶级文件
2、顶级语句可以使用await语法,也可以申明静态方法
3、可以直接在Program写语句,不用写Main方法
参考:顶级语句
二、全局Using指令(C#10.0开始)
1、在using namespace前面加上global,该命名空间会应用到整个项目,注意不是整个解决方案,不用重复using
2、通常会单独新建一个C#文件来放全局的global using namespace
3、csproj文件中启用ImplicitUsings,编译器会自动隐式增加对于System、System.Linq等常用命名空间的引用,不同类型的项目引用的命名空间不一样;
如果将ImplicitUsings设置为disable
参考 全局Using
三、Using声明(C#8.0开始)
1、在实现了IDisposable/IasyncDisposable接口类型的变量申明前加using,当代码执行离开变量作用域,对象就会被释放。
参考 Using声明
四、文件范围的命名空间声明(C#10.0开始)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
namespace MyNamespace; public class Dog{ public long Id{get;set;} public string Name{get;set;} }
参考 文件范围的命名空间声明
五、可为 null 的引用类型(C#8.0开始)
1、设置一个属性类型可为空使用?,想要去除编译器警告使用!
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
string? nullable; string name; Console.WriterLine(name!.toLower())
六、record类型(C#9.0开始)
1、record类型,编译器会自动生成Equal和GetHashcode等方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Person{ public Person(int id,string name){ this.Id=id; this.Name= name; } public int Id {get;init;} public string Name{get;init} } Person p1 =new Person(1,"zhangsan"); Person p2 =new Person(1,"zhangsan"); Console.WriteLine(p1.ToString()); //打印出类名 Console.WriteLine(p1==p2); //False Console.WriteLine(p1.Equal(p2)); //False //==和Equal比较的是判断两个变量是否指向同一个对象 //Record类型 public record Person(int Id,string Name,int Age); Person p3 =new Person(1,"zhangsan"); Person p4 =new Person(1,"zhangsan"); Person p5 =new Person(1,"lishi"); Console.WriteLine(p3.ToString()); //类中的属性数据 Console.WriteLine(p3==p4); //True Console.WriteLine(p3==p5); //False
参考 record类型
参考: https://learn.microsoft.com/zh-cn/dotnet/core/tutorials/top-level-templates#global-using-directives
https://learn.microsoft.com/zh-cn/dotnet/csharp/fundamentals/program-structure/top-level-statements
posted on 2023-09-11 11:27 lovezj9012 阅读(66) 评论(0) 编辑 收藏 举报