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