最少我能明白我現在在做什麼,也能夠承擔因此而引起的後果。
ADO只是提供一組介面標準,各廠商負責具體實現,難免相容方面大打折扣;而ADO.NET加強了統一。
字串的很多方法都是執行個體的,而char一般都是靜態;別忘了,一個是參考型別,一個是實值型別。
ArrayList中的元素可以不是一個類型,但sort時會出錯。
我們內心知道其實我們在作出重重承諾的時候就在撒謊。
StreamReader之類的讀寫要記得關閉,因為把更改先寫到buffer上,不關閉最後不可以儲存結果的。
由於無論原始碼是用什麼語言編寫的所有開發工具都產生相同的中繼語言,所以實現過程中的差異在進入通用語言環境後,就隨之消失了。
new string (“A”,10) // 表示定義了一個10個A的字串。
Callbacks are used to provide feedback from a server to a client asynchronously.
CTS定義了類型在運行時環境中的建立和管理方式;而CLS主要關注的是語言的互動操作性,它定義了不同語言編譯為MSIL的方式。
結構不能定義無參數建構函式,也沒有解構函式。
string is immutable。
介面把對象能做什麼與如何做分離開。
const:常量的實際值是在編譯時間確定的。代碼在從c#編譯為MSIL時,編譯器會把常量的值插入到最終的可執行檔的來源資料中。常量只能是基本類型。所以常量發生變化,則依賴常量的其他類必須重新編譯。
將一項開發議題簡化並且實用化向來都是微軟公司的目標。
型別安全避免了訪問無效的記憶體位址。
調用方法時,CLR通過建立一個棧架構給方法分配記憶體,棧架構是一個基於棧的記憶體塊,它的大小足以容納傳遞給方法的參數和方法內部定義的局部變數。所有的應用程式都是通過一系列方法調用而建立的。在調用方法序列時,系統就會為每個方法建立一個StackFrame,並添加到調用棧中,這個過程建立了一個棧跟蹤StackTrace,他是棧架構的一個有序集合,實際提供了應用程式調用方法序列的詳細記錄。
很多時候,JIT會使屬性的訪問快於欄位的訪問。
實際上,所有的委託都是多播的。單播委託是調用列表上只有一個方法的委託。但單播委託(通過構造方法)和多播委託(組合已有的委託)的建立大不相同,所以要把它們當成不同實體。
namespace 和源檔案是代碼的邏輯組,而程式集就是物理組。
每個程式集都包含中繼資料。它描述了代碼中的類型和成員,替代了c++的標頭檔,介面定義語言和com開發人員使用十年的類型庫。還列出了代碼中參考型別和成員。中繼資料為CLR提供了在運行期間載入類型和調用方法所需的所有資訊。CLR還使用中繼資料加強其安全性。
by千冰念@YITIAN Studio