《深入理解 C 第2版》 書摘精要

2021-09-01 19:46:09 字數 1998 閱讀 6863

(p13) 在很大程度上,c# 2 更像是對 c# 1 的各種不足之處的修修補補,所以並沒有一鳴驚人。而 c# 3 中幾乎所有特性都是為了構建 linq,並且其結果也十分特別;

(p24)

為了讓委託做某事,必須滿足4個條件:

—— 宣告委託型別;

—— 必須有乙個方法包含了要執行的**;

—— 必須建立乙個委託例項;

—— 必須呼叫(invoke)委託例項;

(p30) 事件不是委託例項 —— 只是成對的 add/remove 方法 (類似於屬性的 取值方法/賦值方法);

(p37)

陣列型別是引用型別,即使元素型別是值型別(所以 int 仍是引用型別,即使 int 是值型別);

介面型別 (使用 inte***ce 來宣告) 是引用型別,但可由值型別實現;

(p38)

變數的值是在它宣告時的位置儲存的,區域性變數的值總是儲存在棧 (stack) 中,例項變數的值總是儲存在例項本身儲存的地方。引用型別例項 (物件) 總是儲存在堆 (heap) 中,靜態變數也是;

值型別不可以派生出其他型別;

(p40) 當你呼叫型別變數值的 gettype() 方法時總是伴隨著裝箱過程,因為它不能被過載。如果處理未裝箱形式的變數,你應該已經知道了具體型別,因此使用 typeof 替代即可;

(p41)

引用型別的物件總是在堆上,值型別的值既可能在棧上,也可能在堆上,具體取決於上下文;

引用型別作為方法引數使用時,引數預設是以「值傳遞」方式來傳遞的 —— 但值本身是乙個引用;

值型別的值會在需要引用型別的行為時被裝箱;拆箱則是相反的過程;

(p47) 所謂「函式化」的程式設計風格,是指鼓勵開發者更多地利用委託。匿名方法和lambda表示式的引入,使委託變得易於建立和使用;

(p48) 從根本上說,泛型實現了型別和方法的「引數化」,就像在普通的方法呼叫中,經常要用引數來告訴它們使用什麼值。同樣,泛型型別和方法也可以讓引數告訴它們使用什麼型別;

(p52) 未繫結泛型型別是已構造型別的藍圖,已構造型別是實際的物件的藍圖,正是因為存在這個關係,所以才有「額外的抽象層」一說;

(p53) 其實 c# 語言規範已經說得很清楚,凡是不是「開放型別」的型別,就是「封閉型別」。凡是涉及型別引數的型別,就是「開放型別」;

(p55)

t 是在整個類的範圍內使用的型別引數;

緊跟在方法名後面尖括號中的型別引數,是泛型方法的型別引數;

(p57)

不能因為乙個方法是泛型的,就意味著它必須是泛型型別的一部分;

呼叫泛型方法時,使用和前面見到的一樣的語法來指定引數型別;

(p58)

約束要放到泛型方法或泛型型別宣告的末尾,並由上下文關鍵字 where 來引入;

引用型別約束表示成 t : class 必須是為型別引數指定的第乙個約束;

建構函式型別約束表示成 t : new() 必須是所有型別引數的最後乙個約束;

(p62)

每個型別引數的約束列表都要單獨用乙個 where 引入;

型別推斷只適用於泛型方法,不適用於泛型型別;

(p74) 實現介面所規定的方法或屬性時,附加介面名作為字首,即稱為「顯式介面實現」;

(p78) 陣列協變性 —— 引用型別的乙個陣列可以被視為它的基型別的乙個陣列,或者被視為它所實現的任何介面的乙個陣列;

(p141) 在常規的方法中,return 語句具有兩個作用:第一,給呼叫者提供返回值;第二,終止方法的執行,在退出的時候執行合適的 finally **塊;

(p194)

linq 的基本功能就是建立操作管道,以及這些操作需要的任何狀態;

linq to objects 處理的是同乙個程序中的資料序列;

(p196)

lambda 表示式最冗長的形式是 —— ( 顯式型別引數列表 ) =>

lanbda 表示式快捷語法形式:

( 顯式型別引數列表 ) => 表示式

( 隱式型別引數列表 ) => 表示式

引數名 => 表示式

《深入理解C 》第3版 學習進度備忘

學習資源 深入理解c 第3版 知識基礎支援 c in a nutshell o reilly出版社,是一本從頭介紹c 的優秀圖書。essential c 5.0 也不錯 跳過的內容 1 知識要點 1 當使用自定義型別的時候,如果與陣列相關,應使用類似list的泛型程式設計,這樣可以避免很多問題,例如...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...