在c# 3.0中,引進了extension methods,伴隨而來的是乙個新玩意兒linq。用實用工具reflector.exe開啟system.core.dll中的 system.linq命名空間,有個enumerable靜態類,其中有大量的對"陣列"操作的擴充套件方法(你能想到的基本都有,不信就去看看!)。(文/k#)
對於用慣了for迴圈的朋友,如果要他/她停止使用,肯定會覺得日子沒法過了。放心好了,我不會勸他/她停止使用的,就像戒菸一樣,都是自己的事。(又一次跑題,言歸正傳!)
下面我用**來演示,如何用"擴充套件方法/linq"來乾掉"for迴圈":
[test]
public void oldsum()
assert.areequal(45, sum0);
}[test]
public void newsum()
複製**
注:無論是對一串數字求和還是求積,歸根到底,都是把一串東西變成乙個東西,此時就用aggregate!
[test]
public void oldfilter()
;listodd_list = new list();
for (int i = 0; i < arr.length; i++)
}int odd_arr = odd_list.toarray();
assert.that(odd_arr, is.equivalentto(new int ));
}[test]
public void newfilter()
;int odd_arr = arr.where(x => x % 2 == 1).toarray();
assert.that(odd_arr, is.equivalentto(new int ));
}複製**
注:無論是取奇數還是偶數,歸根到底,都是取一串東西中的某些東西,此時就用where!
[test]
public void oldmap()
;listnew_list = new list();
for (int i = 0; i < arr.length; i++)
int new_arr = new_list.toarray();
assert.that(new_arr, is.equivalentto(new int ));
}[test]
public void newmap()
;int new_arr = arr.select(x => x * 10).toarray();
assert.that(new_arr, is.equivalentto(new int ));
}複製**
c 擴充套件方法的使用
擴充套件方法使您能夠向現有型別 新增 方法,而無需建立新的派生型別 重新編譯或以其他方式修改原始型別。你一定很疑問什麼是擴充套件方法!什麼是擴充套件方法?回答這個問題之前,先看看我們一般情況下方法的呼叫。類似這樣的通用方法你一定寫過 static void main string args 將字串轉...
C 擴充套件方法的使用
c 擴充套件方法可以在不繼承原有類的基礎上,為原有類新增方法,c 擴充套件方法可以合併到要原有類的例項上,擴充套件方法需要定義為靜態方法,並且第乙個引數必須為要擴充套件型別的當前例項 引數前加this關鍵字 public static class extendstring 首先定義乙個靜態類,定義乙...
C 擴充套件方法的使用
c 3.0引入了擴充套件方法的概念,乍一聽起來不是很好理解,我們舉乙個簡單的例子 有乙個業務場景,需要頻繁地判斷乙個字串內是否包含阿拉伯數字,字串的contains方法是沒有辦法實現的,那麼可以考慮寫乙個公共方法,封裝乙個方法隨時來判斷,類似下面這樣的 public static class str...