public class SharpNineNewInfo
{
public static void Show() {
//记录
{
//init对于类内部属性只能在初始化时赋值
UserInfo user1 = new UserInfo()
{
Id = 1,
UserName = "1"
};
//record
RecordUserInfo1 user2 = new RecordUserInfo1()
{
Id = 1,
UserName = "2"
};
RecordUserInfo2 user3 = new(1,"3");
//with复制对象修改值
var user4 = user3 with { UserName = "4" };
}
//简化对象声明
{
UserInfo userInfo = new();
}
//静态修饰
{
Func<int> func = static () => 1;
}
//模式匹配
{
var a = ‘A‘;
Console.WriteLine(a.IsLetterNew());
}
//为空判断
{
string name = "";
if (name is null) {
Console.WriteLine("null");
}
}
//协变返回值,可以直接返回继承子类对象
{
UserAction1 action = new();
action.GetUserInfo();
}
//原生大小数据类型,根据计算机类型获取
{
nint a = 1;
nuint b = 2;
}
//Lambda 参数弃元
{
Func<int, int, int> func = (_, _) => 0;
}
}
}
public abstract class UserAction {
public abstract UserInfo GetUserInfo();
}
public class UserAction1 : UserAction
{
/// <summary>
/// 可以直接返回子类对象
/// </summary>
/// <returns></returns>
public override UserInfo2 GetUserInfo()
{
return new UserInfo2();
}
}
public class UserInfo2: UserInfo { }
public static class SharpNineInfo {
public static bool IsLetterNew(this char b) =>
b is >= ‘a‘ and <= ‘z‘ or >= ‘A‘ and <= ‘Z‘;
}
record RecordUserInfo2(int Id,string UserName);
public record RecordUserInfo1
{
public int Id { get;init; }
public string UserName { get; init; }
}
public class UserInfo {
public int Id { get; init; }
public string UserName { get; init; }
}
原文:https://www.cnblogs.com/lemonzwt/p/14617903.html