由于前段時間為了寫工具學的太J8粗糙 加上最近一段時間太浮躁 所以靜下心來復習 一遍以前學的很弱的一些地方
1 委托
public delegate double weituo(double a, double b);public static double test1(double a,double b){return a * b;}public static double test2(double a,double b){return a / b;}public static void test3(weituo test){Console.WriteLine(test(2.5, 0.5));}static void Main(string[] args){//weituo test;//test = test2;//test3(test); }
?多播委托
weituo test;
test = test1;
test += test2;
test3(test);
但是要求test1 test2方法必須沒有返回值即void
?
匿名函數
public delegate double weituo(double a);static void Main(string[] args){weituo f3 = delegate(double x){return 3 * x + 5;};Console.WriteLine(f3(3.5));}
?Lambada函數
weituo f3 = (double x) => { return 3 * x + 5; };Console.WriteLine(f3(3.5));
?
file與filestream讀取文件的區別
file讀取文件,是一次性把文件全都裝載到內存當中。這個對于幾百K,幾M的文件還可以,但是對于
幾個G的文件就尷尬了。據說,有個面試題是,面對幾個G的txt文件,你怎么檢索。
filestream 文件流讀取文件。按照個人設定的容量,每次讀取這么多,分批次處理,比如一個200M的txt,
我規定每次讀取5M,再來個for循環,就可以把這200M的東西,化整為零,逐批次處理。
?
C#string與stringBuilder的區別
string的缺點是每次字符串變量的內容發生了改變時,都必須重新分配內存。你想想,如果創建一個迭代100000次的循環,每次迭代都將一個字符連接到字符串,這樣內存中就會有100000個字符串,每個字符串僅僅與前一個字符串相伴只是有一個字符不同,性能影響是很大的。StringBuilder通過分配一個緩存,就是一個工作區來解決這些問題,在工作區中隊字符串應用StringBuilder類的相關方法。包括添加,刪除,移除,插入和替換字符等等。執行完之后,將調用ToString方法把工作區中的內容轉換為一個字符串,方便賦給一個字符串變量。這樣StringBuilder會提升一些性能。
?正則表達式復習

?
?
?
?
可選字符集
?
?
?
?數量限定符
?
string text2 = "lg log loog looog loooog looooog";Regex expression = new Regex(@"l(oo)+g"); 代表()+表示括號內的一次或者多次 不加括號代表左邊一個 其他都是這樣
?
?
?
* = >0個或多個 + = >1個或多個
? = >0次或1次
lo{3}g 匹配到looog l(00){3}g 匹配到loooooog
lo{3,}g表示3往上次數looog loooog 無上限
lo{3,5}g3次到5次
*?將前面的字符重復0次或多次 盡量少重復
+?一次活多次盡量少重復
貪婪匹配(@"<.*>");
懶惰匹配(@"<.*?>");
?
?
?^從頭部開始匹配
$從末尾開始匹配
?
?^和$類似還有\b在正則表達式前面跟^一樣 在后面跟$一樣
?