最近有人問我 令Q 跟 浪打 到底是在玩什麼花招的? 可以吃嗎? 非用不可?
我就在此稍微回答一下
1.令Q 跟 浪打 都可以用來對付 [可列舉型態型別的查詢] 浪打花招更多一點點 還能用來建立 委派 跟 註冊事件
2.可以吃唷 前者有點 QQ 的 後者 有點辣辣的
3.就民主立場而言 沒有非用不可 跟你有沒有非要 非死不可 差不多
但是專制獨裁的微軟要推他就會使出各種陰謀稱作技術主流
如果這張圖你很懂在幹嘛 你可以關閉這個網頁 試著啟動 OO聯盟
影像節錄自 跟著 Wade 哥哥 學習ASP.NET MVC + NHibernate - Day 5 16:43如果 你覺得 花惹發科 就繼續看下去
其實上圖跟等下的內容沒有關係 呵呵 但是證明了 微軟會無所不用其極的在任何地方使用他
首先 非關DB 非關Query List 的 方法
如果你不認識 泛型先生 跟 委派小姐 的話 請拜估狗大神
生死格鬥之浪打委派 第一彈 List Sort()、Find()、FindAll()、Exist() 豬走路範例
public void Sort(Comparison<T> comparison);
public T Find(Predicate<T> match);
public List<T> FindAll(Predicate<T> match);
public bool Exists(Predicate<T> match);
發現了什麼了嗎? 沒錯 浪打 就是一個委派 委派就是一個方法 所以使用浪打 跟使用一般的方法只差在多寫一個 方法
(這句話其實不完全正確 但是暫時這麼想會比較好理解)
以前老師說 一般的 = 在C# 是向左指派的意思 而 => 則是 向右指派 所以 x 可以被 => 右邊所用...
恩 完全正確 但是當時我也 完全不知道這是在講沙米碗糕 真是給他打敗啦 還是說只有我比較笨 聽不懂上面這句話
實際玩弄很久之後 才大徹大悟 哎呀 他不過是濃縮寫法的方法
=> 的左邊 就是方法傳入參數 會由叫用委派的地方提供
而且會自動推斷型別 所以不像一般方法需要 給傳入參數標明型別
=> 的右邊 就是方法要執行的內容
一行寫法 可以省略 { } return 跟 ;
整個浪打本身 就是一個匿名方法 所以不像一般方法需要命名
沒傳入參數 沒回傳型別 浪打
private void Foo()
{
Action Fn = () => { };
}
沒傳入參數 沒回傳型別 方法
private void Fn()
{
}
有傳入參數 沒回傳型別 浪打
private void Foo()
{
Action<int> Fn = i => { };
}
有傳入參數 沒回傳型別 方法
private void Fn(int i)
{
}
沒傳入參數 有回傳型別 浪打
private void Foo()
{
Func<bool> Fn1 = () => true;
Func<bool> Fn2 = () => { return true; };
}
沒傳入參數 有回傳型別 方法
private bool Fn()
{
return true;
}
有傳入參數 有回傳型別 浪打
private void Foo()
{
Func<int, bool> Fn1 = i => i > 0;
Func<int, bool> Fn2 = i => { return i > 0; };
}
有傳入參數 有回傳型別 方法
private bool Fn(int i)
{
return i > 0;
}
什麼? 你說 LINQ 跟查詢在哪? 下回分曉 哈哈
沒有留言:
張貼留言