天天看點

.Net的基礎概念

1,參數傳遞.

預設都是按值傳遞(無論引用還是值類型),也就意味着傳遞參數的一個副本給方法.之後在方法體内對參數的更改,對原始參數沒有影響.

使用ref/out可以按引用傳遞,直接影響原始參數變量.兩者的差別是ref參數必須在傳遞之前進行初始化.在異步方法和疊代器方法中,不能使用它.

2,CTS,CLS

CTS是一個集合,符合它的規範的類型才能在CLR上運作.CLS是它的子集,因為C#中有的類型,在VB中可能沒有(ulong).

預設不會進行CLS的檢查,

.Net的基礎概念

[assembly:System.CLSCompliant(true)]可以進行檢查.

不符合CLS的代碼,在不同語言間會出現複用的問題.

3,CLR

編譯階段,生成的是CIL組成的中間語言,然後在運作時由個平台的JIT來編譯成機器指令進行運作,是以能夠跨平台.

4,GC

0代是新建立的對象,1代是經曆過1次GC後留存的,2代是經曆過1次以上GC留存的.回收時,先從0代開始.