C#7新語法糖
1.Switch 使用 goto 使用
var kk = 1; switch (kk) { case 1: Console.WriteLine(1); goto case 4; case 2: Console.WriteLine(2); goto case 3; case 3: Console.WriteLine(3); goto default; case 4: Console.WriteLine(4); goto default; default: Console.WriteLine("default"); break; } /**switch 用法, 在循環中可 分別多種類型 而且可以 進行類型,內容初步判斷**/ List<object> objList = new List<object> { "1", 1, 1.22F }; var sum = 0d; foreach (var item in objList) { switch (item) { case string str when int.TryParse(str, out int result): sum += result; break; case int number: sum += number; break; case float number when number > 1: sum += number; break; default: break; } } Console.WriteLine(sum);
2.Object?.屬性 新語法糖, 可以排除 對象為Null 的情況 , 不能排除屬性為null 的情況
TmpClass1 obj1 = null; //對象為null var int16 = obj1?.tmpAtt ?? 0;// ??0 是判斷 如果屬性為空,則給默認值 var str = obj1?.tmpAtt1 ?? "0";// ??0 是判斷 如果屬性為空,則給默認值 Console.WriteLine(int16); Console.WriteLine(str); int16 = 16; Console.WriteLine($"平均成績:{(int16 > 80 ? int16 : 0):F2}");
3.Tuple 元組使用 與 解元組,元組調整為結構體,以前是類
Tuple<int, int> tuple = new Tuple<int, int>(1, 2); Console.WriteLine($"第一個元素item1:{tuple.Item1} 第二個元素item2:{tuple.Item2}"); (string Message, int Code) tuple7 = ("請求失敗", 500); Console.WriteLine($"第一個元素Message:{tuple7.Message} 第二個元素Code:{tuple7.Code}"); var tuple7t = (Message: "請求成功!", Code: 200); Console.WriteLine($"第一個元素Message:{tuple7t.Message} 第二個元素Code:{tuple7t.Code}"); /**解析方法**/ var (Message, Code) = tuple7; Console.WriteLine($"解析元組 第一個元素Message:{Message} 第二個元素Code:{Code}"); var (Item1, Item2) = tuple; Console.WriteLine($"解析元組 第一個元素Item1:{Item1} 第二個元素Item2:{Item2}"); TmpClass1 obj1 = new TmpClass1(10, "牛牛"); var (age, name) = obj1; Console.WriteLine($"解析元組 第一個元素age:{age} 第二個元素name:{name}");
4.參數 params 使用 可以代替數組,不過可讀性不強
class Program { Main方法 static void Main(string[] args) { AnyWrite("text", 1, "abvc"); } static void AnyWrite(params object[] data) { foreach (var item in data) { Console.WriteLine(item); } } }
