ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#8.0新特性

2021-04-05 10:04:40  阅读:133  来源: 互联网

标签:8.0 Console C# void 特性 int static WriteLine public


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

  

标签:8.0,Console,C#,void,特性,int,static,WriteLine,public
来源: https://www.cnblogs.com/lemonzwt/p/14617828.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有