一,c#物件初始化語法:
1 product p = newproduct()
2;
宣告物件嘛,應該有分號的。。。。
其實,我們在使用集合或陣列的時候,早就使用過這種語法糖了,如:
1 list templist = new list ;
二、使用拓展方法
第三方類或者是沒有源**的類,可以通過用拓展方法來獲得所需的功能。
1 public static classproductlistextension2 10 returnd;
11 }
12 }
注意,拓展方法所在的類必須是靜態類,拓展方法也必須是靜態方法。
呼叫的方法,與普通的方法使用方法一致,如下:
1decimal temp = p.totalprice();
三、使用lambda表示式
lambda表示式以委託的方式簡寫方法體。
學習lambda之前,先引入委託func,用來封裝具有乙個t型別引數,並返回乙個tresult型別引數的方法,該委託可以作為其他方法的引數進行傳遞。這種寫法實際上就是不用自己定義委託。
參考:
1//func首先是定義乙個委託,委託所指向方法只有乙個引數prod,有乙個返回值bool
2 funcbool> func = delegate
(product prod)3;
6//用lambda的方式來簡化委託的定義
7 func = prod => prod.category == "語文"
;8//或者是不宣告func,直接把lambda表示式作為引數傳遞給指定的以func委託為引數的方法
9foreach (product p in productarray.filter(prod => prod.category == "語文"
))10
四、臨時
datatable dt=new datatable();
dt.asenumerable()返回乙個ienumrable物件,其泛型引數t為datarow,此返回物件可用在linq表示式中。
enumerablerow.select()方法轉化原datarow元素,示例**如下:
return dt.asenumerable().select(row => newperson()
.tolist();
上面**的作用是將datatable(即dt)中的每一行(即datarow)轉化成乙個person物件,最後生成乙個person的list。
C 讀書筆記
1.內建函式 inline必須在呼叫前進行完整定義,語 define相同,但是消除了不安全性 例 inline float circle float r 2,函式原型 語法形式 返回型別 函式名 參數列 1 函式原型的參數列中不包含引數的名字,而只包含型別 2 函式定義由函式說明部分和函式體構成 3...
C 讀書筆記
c陷阱和缺陷 1.賦值符優先順序比邏輯比較低,賦值表示式的結果為賦值後的結果 2.編譯器掃瞄符號使用貪心法,盡量選擇最長字元的符號串,如a 理解為a 而不是a 3.為相容老版本編譯器,不同符號之間最好加空格,如a 1可能理解為a 1,應該改為a 1 4.老版本編譯器,8進製數以0開始,後面可以加超過...
c 讀書筆記
再看一本叫做 stl lectures 的書,裡面有一段 讓我學習了 include includeusing namespace std template const t max const t x,const t y int main 我說這段 讓我學習,不是說它寫的多好 因為這段 在g 4.8...