C#9.0新特性

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; }
    }

  

posted @ 2021-04-05 10:36  不骄不傲  阅读(93)  评论(0编辑  收藏  举报