標籤:style blog io ar color 使用 sp on 資料
【C# 文法糖】
一, 擴充方法
1. 對某個類功能上的擴充
2. 特點: 使用方便,可以在不修改原代碼的基礎上進行擴充。 參照 linq,linq 就是一系列的擴充方法
3. 文法: 非泛型靜態類,靜態方法, 第一個參數加 this,表示是對該類型的擴充
4. 代碼
public static class Extension { private static int _defaultInt = 0; public static int ToInt(this string str) { if (int.TryParse(str,out _defaultInt)) { return _defaultInt; } return 0; } }
二, 運算子多載
1. 文法: 靜態方法, 方法名 operator 加 運算子,參數類型 當前類
2. 不是很常用
3. 代碼
public class Operator { public int Num { get; set; } public static int operator +(Operator o1, Operator o2) { return o1.Num + o2.Num; } }
三,Lambda
1. Lambda 可以看成是對委託的簡化
2. 文法 ()=>{...}
3. Lambda 開始學習時會非常不習慣,但用慣了會非常上癮的。代碼變得更簡潔。另 委託 推薦使用系統定義的 Action 和 Func,不需要自己去定義委託類型
4. 注意 消極式載入
5. 代碼
Func<int, int, int> addFunc = (x, y) => x + y; int i = addFunc(5, 6);
四, Linq
1. 本質 擴充方法
2. 使用上 推薦 方法文法 而不是 類sql 文法。方法文法可讀性高,而且更符合 c# 的文法。
3. 注意 消極式載入
4. 文法 Linq + Lambda + var , 簡潔而優美
5. 代碼
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7 }; var v = list.Where(n => n < 3);
五, 匿名型別
1. 匿名型別 var
2. 使用情境 需要修改實體類屬性,但又不想修改原實體類,也不想添加新的實體類,這可以用匿名型別
3. 特點 靈活
4. 代碼
Operator op = new Operator { Num = 3 }; var v = new { OP = op, Name = "我是var" };
Console.WriteLine(v.OP.Num + v.Name);
六, 方法參數預設值
1. 簡化重載, 將多個重載方法合并,減少代碼量
2. 代碼
private static void Main(string[] args)
{
ShowName();
ShowName("不是預設");
Console.ReadLine();
} private static void ShowName(string name = "預設名稱")
{
Console.WriteLine(name);
}
七, 運算子
1. 三元 :
a. 替換簡單的 if else
b. 文法 Console.WriteLine(i > 0 ? "大於0" : "小於0");
2. 預設值 :
a. 參數預設值,用在資料庫非空非常好用
b. 文法 Console.WriteLine(s ?? "我是預設值");
八, 待續...
【C# 文法糖】