CSharp8.0 / C#8.0新语法【部分】

using System;

namespace CSharp8._0
{
    public interface ICustom
    {
        public void Show();

        public void ShowInfo()
        {
            Console.WriteLine("showinfo");
        }
    }

    public class Custom : ICustom
    {
        public void Show()
        {
            Console.WriteLine("show");
        }
    }
}

  

 

using System;
using System.Collections.Generic;
using System.Text;

namespace CSharp8._0
{
    enum WeekInfo
    {
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6,
        Sunday = 7
    }
    public class EmployeeInfo
    { 
        public int Sex { get; set; }
        public string SexChinese { get; set; }
    }
    class SharpEightInfo
    {
        public static string WeekToStringOld(WeekInfo week)
        {
            switch (week)
            {
                case WeekInfo.Monday:
                    return "周一";
                case WeekInfo.Tuesday:
                    return "周二";
                case WeekInfo.Wednesday:
                    return "周三";
                case WeekInfo.Thursday:
                    return "周四";
                case WeekInfo.Friday:
                    return "周五";
                case WeekInfo.Saturday:
                    return "周六";
                case WeekInfo.Sunday:
                    return "周日";
                default:
                    throw new NotImplementedException("没有该枚举");
            }
        }

        public static string WeekToStringNew(WeekInfo week) => week switch
        {
            WeekInfo.Monday => "周一",
            WeekInfo.Tuesday => "周二",
            WeekInfo.Wednesday => "周三",
            WeekInfo.Thursday => "周四",
            WeekInfo.Friday => "周五",
            WeekInfo.Saturday => "周六",
            WeekInfo.Sunday => "周日",
            _ => throw new NotFiniteNumberException("不存在的枚举值")
        };

        public static bool SexToString(EmployeeInfo employee) => employee switch
        {
            { Sex: 0 } => employee.SexChinese == "男",
            { Sex: 1 } => employee.SexChinese == "女",
            { Sex: 2 } => employee.SexChinese == "未知",
            _ => throw new NotImplementedException("性别设定超出")
        };

        public static string TupleTest(int i, string x) => (i, x) switch
        {
            (1, "1") => $"{i}={x}",
            (1, "2") => $"{i}={x}",
            (1, "3") => $"{i}={x}",
            _ => "不存在"
        };

        public static int StaticLocationFun(int i)
        {
            int j = 1;
            return Add(i, j);

            static int Add(int i, int j) => i + j;
        }
    }
}

  

namespace CSharp8._0
{
    class Program
    {
        static void Main(string[] args)
        {
            //默认接口方法
            ICustom custom = new Custom();
            custom.Show();
            custom.ShowInfo();

            //switch属性模式
            SharpEightInfo.WeekToStringOld(WeekInfo.Monday);

            SharpEightInfo.WeekToStringNew(WeekInfo.Tuesday);

            EmployeeInfo employee = new EmployeeInfo()
            {
                Sex = 0,
                SexChinese = "未知"
            };
            bool bol = SharpEightInfo.SexToString(employee);

            string result = SharpEightInfo.TupleTest(1, "2");

            //静态本地函数
            SharpEightInfo.StaticLocationFun(1);

            //可控类型
            //int? i = null;
        }
    }
}

  

posted @ 2021-01-25 00:01  gygtech  Views(640)  Comments(2Edit  收藏  举报