C IN Depth 第十三章,第十四章

2021-09-27 01:48:14 字數 2191 閱讀 4047

看nutshell

看nutshell

簡化**的微小修改

1.可選引數,需要給定乙個預設值

2.預設值也可以指定為null

3.命名實參:在引數呼叫的時候寫上引數的命名,可以打亂引數的順序

4.命名實參和位置實參可以混用,位置實參必須在最前面

5.當引數是乙個表示式的時候,會先全部計算好所有引數表示式的值,然後再允許本方法。函式表示式引數的計算順序是從左到右的

6.命名引數和可選引數結合

static void main(string args)

static void foo(string a,int b = 1, string c = "fff")

7.命名引數和可選引數可以有效減少過載的數量

1.協變性:用於向呼叫者返回某項操作的值,(由子類向基類轉化)

2.逆變性:傳入api的值,(由基類向子類轉化)

3.不變性:雙向傳遞的值

4.協變和逆變只能使用在泛型的介面和委託中

5.盡量不自定義out和in,只使用.net框架提供的協變和逆變功能

對於lock**,編譯器會幫我們預設的生成一些別的**,c# 4更好的解決了這個問題。確保鎖的釋放,或者說應該被釋放的時候才釋放,不需要釋放的時候不需要釋放

事件不顯示的包含add和remove方法,和屬性一樣,在後台建立乙個field。

1.繫結:決定使用哪個成員的過程

2.靜態型別:繫結發生在編譯時

3.動態型別:繫結發生在編譯時。編譯器可以檢查語法是否正確,但是無法檢查使用的方法或屬性是否真的存在

1.知道要呼叫的成員名稱,要傳入的引數,要呼叫的物件

2.所呼叫物件的型別和引數的型別

3.物件可以通過分析提供給他的名稱和引數來響應某個呼叫

1.使用dynamic

2.事實上,dynamic並不代表乙個特定的clr型別。它實際上只是包含dynamicattribute特性的object型別。但是可以將其視為乙個真正的型別

1.特點:

幾乎所有的clr型別都可以隱式轉換為dynamic型別

所有dynamic型別都可以轉為clr型別

使用dynamic型別的表示式通常會動態的求值

動態求值的表示式的靜態型別通常被視為dynamic

可以和動態語言進行互動,python

1.執行時型別推斷

2.彌補泛型操作符的不足

3.鴨子型別

知道在執行時一定有固定的成員,但是無法確定這個成員,因為所有符合這個基類的子類都有這個成員(但是不一定定義在基類中)。可以使用動態型別來呼叫

4.多重分發

對於靜態型別,c#使用單一分發,有函式過載的情況下,在編譯時就確定了唯一的一種,在執行時就會執行哪一種。

多重分發,有過載的情況,在執行時才會確定使用哪一種型別

static int count(icollectioncollection)

static int count(icollection collection)

static int count(string collection)

static int count(ienumerable collection)

return count;

}static void print(ienumerable collection)

1.dlr:動態語言執行時

2.dlr:動態語言執行時是所有動態語言和c#編譯器用來動態執行**的庫

3.dlr將用繫結器、呼叫點、元物件,以及各種概念表示的**轉換為表示式樹,後者可以被編譯為il,並最終由clr編譯為本地**。

1.目的:基於執行時才能知道的資訊以高階形式表示並執行**

2.呼叫點:呼叫方法的地方

3.繫結器:取決於呼叫的語言,並且是呼叫的一部分

4.接收器:動態型別所引用的物件

5.規則:如何執行乙個呼叫所作出的決策。呼叫點表現為這種行為時所處的環境以及行為本身

6.快取

1.如果使用了動態,那麼它就是動態的。如果方法有過載,那麼dynamic引數不一定會被使用

2.除了在方法內部以外,dynamic型別的引數將被視為object型別,也確實是object型別

2.clr型別和動態型別之間的轉換

3.動態表示式並不總是動態求值的

參考c# nut shell

第十三章 限制 第十四章 參考

宣告 此文章翻譯自box2d v2.2.0使用者手冊,僅供學習參考。box2d使用了一些近似值來模擬剛體的物理效果。這就帶來了一些限制。下面是當前的一些限制 疊加一些重物體到很輕的物體上面會不穩定。當質量比例超過10 1的時候穩定性會下降。被聯結器連線的物體鏈,輕物體吊著重物體容易被拉伸。比如說,乙...

第十三章 併發

13.1 動機 13.2 基本執行緒 如果必須要控制現成的執行順序,最好是根本不用執行緒,而是自己編寫特定順序彼此控制的協作子程式。繼承thread類或者實現runnable介面。內部類實現。13.3 共享受限資源 1 如果要對類中的某個方法進行同步控制,最好同步所有方法。如果忽略了其中乙個,通常很...

第十三章 類

1.類簡單地說是乙個性的資料型別。類當中有資料成員,和成員函式。類的基本思想就是體現出資料的抽象和封裝。2.這裡只需要說明乙個問題即可 就是類成員函式的const型別 class screen public const int get const int i const int j const 這裡...