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