C 讀書筆記

2022-02-24 17:58:31 字數 1411 閱讀 3181

一,c#物件初始化語法:

1             product p = new

product()

2;

宣告物件嘛,應該有分號的。。。。

其實,我們在使用集合或陣列的時候,早就使用過這種語法糖了,如:

1 list templist = new list ;

二、使用拓展方法

第三方類或者是沒有源**的類,可以通過用拓展方法來獲得所需的功能。

1      public static classproductlistextension

2 10 returnd;

11 }

12 }

注意,拓展方法所在的類必須是靜態類,拓展方法也必須是靜態方法。

呼叫的方法,與普通的方法使用方法一致,如下:

1

decimal 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 => new

person()

.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...