7 C#新语法
全局using
// 在任意代码文件中指定 global using, 在项目中就不再需要显式引入这个命名空间了
global using System;
- 通常创建一个专门用来编写全局 using 代码的 C# 文件
- 如果 csproj 中启用了<lmplicitUsings>enable</lmplicitUsings>, 编译器会自动隐式增加对于System, System.Linq等常用命名空间的引入, 不同各类型项目引入的命名空间也不一样
Record
// 基础用法
public record Person(int Id, string Name, int Age);
// 可以自定义构造函数
public record Student(int Id, string Name)
{
public string? NickName { get; set; }
public Student(int Id, string Name, string nickName) : this(Id, Name)
{
this.NickName = nickName;
}
}
// 使用
var p1 = new Person(1, "A", 10);
var p2 = new Person(2, "B", 15);
var p3 = new Person(2, "B", 15);
p1 == p2; // false
p2 == p3; // true
Object.ReferenceEquals(p1, p2); // false
// 复制副本(with 关键字可用于 Record 类型)
var p4 = p1 with {};
var p5 = p1 with { Name = "NEW" };
var p6 = p1;
p1 == p4; // true
p1 == p5; // false
p1 == p6; // true
Object.ReferenceEquals(p1, p2); // false
Object.ReferenceEquals(p1, p6); // true
No Comments