C#8.0新特性

public class SharpEightNewInfo
    {
        public enum WeekInfo
        {
            MonDay = 1,
            TuesDay = 2
        }
        public static void Show() {

            //默认接口函数,接口函数可以直接在接口里实现
            {
                ICustomInterface interface1 = new CustomClass();
                interface1.Show();
                interface1.ShowInfo();
            }

            //swtich表达式
            {
                Console.WriteLine(WeekToString(WeekInfo.MonDay));
            }
            //属性模式switch
            {
                ProertyPattern pattern = new ProertyPattern()
                {
                    ProducName = "test",
                    Price = 10
                };
                Console.WriteLine(ProertyPatternShow(pattern));
            }

            //元组模式switch
            {
                Console.WriteLine(RockPaperScissors("test1","test2"));
                Console.WriteLine(RockPaperScissors("test1", "test3"));
            }

            //位置模式
            {
                PointInfo point = new PointInfo(123, 234);
                int i = 11;
                int j = 12;
                point.Deconstruct(out i,out j);
            }
            //异步流,异步遍历集合
            {
                AsyncIEnumerableShow();
            }
            while (true)
            {

            }
        }
        public async static void AsyncIEnumerableShow() {
            Console.WriteLine("**异步流**");
            IAsyncEnumerable<int> asynclist = GenerateSequence();
            await foreach (var item in asynclist)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("**异步流**");
        }
        /// <summary>
        /// 返回异步流集合
        /// </summary>
        /// <returns></returns>
        public static async IAsyncEnumerable<int> GenerateSequence() {
            for (int i = 0; i < 20; i++)
            {
                await Task.Delay(1000).ContinueWith(s => {
                    Console.WriteLine($"线程ID:{Thread.CurrentThread.ManagedThreadId.ToString("000")}");
                });
                yield return i;
            }
        }
        /// <summary>
        /// 元组swtic匹配
        /// </summary>
        /// <param name="first"></param>
        /// <param name="second"></param>
        /// <returns></returns>
        public static string RockPaperScissors(string first, string second) => (first, second) switch
        {
            ("test1", "test2") => $"{first}-{second}",
            (_, _) => "未找到"
        };
        /// <summary>
        /// C#8 switch语法
        /// </summary>
        /// <param name="week"></param>
        /// <returns></returns>
        public static string WeekToString(WeekInfo week) => week switch
        {
            WeekInfo.MonDay => "周一",
            WeekInfo.TuesDay => "周二",
            _ => throw new NotImplementedException(""),
        };
        /// <summary>
        /// 属性模式,直接匹配属性,swtich分之判断
        /// </summary>
        /// <param name="pattern"></param>
        /// <returns></returns>
        public static double ProertyPatternShow(ProertyPattern pattern) => pattern switch
        {
            { ProducName: "test" } => pattern.Price * 10,
            _ => throw new NotImplementedException(),
        };
    }

    public class PointInfo {

        public PointInfo(int x, int y) => (X, Y) = (x, y);
        public int X { get; set; }

        public int Y { get; set; }

        public void Deconstruct(out int x, out int y) => (x, y) = (X,Y);
    }

    public class ProertyPattern { 
        public string ProducName { get; set; }

        public double Price { get; set; }
    }
    
         

    public class CustomClass : ICustomInterface
    {
        public void Show()
        {
            Console.WriteLine("this is show");
        }
    }
    /// <summary>
    /// 默认接口函数
    /// </summary>
    interface ICustomInterface {
        public void Show();
        /// <summary>
        /// 接口可以带函数体
        /// </summary>
        public void ShowInfo() {
            Console.WriteLine("this is showinfo");
        }
    }

  

posted @ 2021-04-05 09:42  不骄不傲  阅读(145)  评论(0编辑  收藏  举报