c 方法過載,可選引數,命名引數。

2021-07-04 18:06:28 字數 1429 閱讀 9626

其實這裡沒什麼可說哦,c++的語法大同小異。先看一段**。

方法過載,可選引數兩種技術一起使用,很難一眼看出最終呼叫的是那個方法。只有在所有引數(可選引數除外)都恰好有乙個實參,而且該引數具有相容型別的情況下,才說乙個呼叫適用於乙個方法。雖然這限制了可呼叫方法的數量,但不足唯一性的表示方法。為了進一步區分方法,編譯器只是用呼叫者顯示標識的引數,忽略呼叫者沒有指定的哦可選引數。所以,假如由於乙個方法有可選引數,造成兩個方法都適用,編譯器最終稿選擇的是無可選引數的方法。正如這段**所反映的。

方法解析:

當編譯器必須從一系列適用的方法中選擇乙個最適合某個特定呼叫方法的時候,會選擇擁有最具體的引數型別的那個方法。假如有兩個適用的方法。每個要求將實參隱式的轉化為形參型別,編譯器最終選擇的是更具體的派生型別的那個方法的實現。

例如:假如呼叫者傳遞的是乙個int,那麼接受double的方法將優先於接受object的方法,這是由於double比object更加具體,因為,有不是double的object,但是沒有不是object的double,所以double更加具體。

如果有多個適用的方法,但無法從中挑出最具唯一的,編譯器就會報錯,指明存在二義性。

如下面的這些方法:

static void method(object thing){};

static void method (double thing){};

static void method (long thing){};

static viod method(int thing){};

呼叫method(42)會被解析成為int,因為存在著乙個從實參型別到新參型別完全匹配的方法,如果刪除該方法,那麼過載解析會選擇long版本,因為long比double和object更加具體的版本。

c#規範包含額外的規則來決定byte,ushort,uint,ulong和其他數值型別之間的隱士轉換,但在寫程式的時候,最好是使用顯示轉型,以方便別人理解你想呼叫哪個目標方法。

命名引數

命名引數對於含有可選引數的方法是極大的便利。

但是犧牲了介面的靈活性,要將引數名視為api的一部分,如果api之間的版本相容性很重要,就要避免更改引數名。

C 方法的可選引數 命名引數

原文 c 方法的可選引數是.net 4.0最新提出的新的功能,對應簡單的過載可以使用可選引數和命名引數混合的形式來定義方法 這樣就可以很高效的提供 的執行效率!設計乙個方法的引數的時,可為部分或全部引數分配預設值。呼叫其方法時,可以重新指定分配了預設值的引數,也可以使用預設值 重新指定分配預設值的引...

C 可選引數 命名引數

1.可選引數 可選引數是.net4中新新增的功能,應用可選引數的方法在被呼叫的時可以選擇性的新增需要的引數,而不需要的引數由引數預設值取代。classprogram privatestaticstringshowcomputer stringcpu i3 370m stringram 4g stri...

C 可選引數 命名引數

1.可選引數 可選引數是.net4中新新增的功能,應用可選引數的方法在被呼叫的時可以選擇性的新增需要的引數,而不需要的引數由引數預設值取代。class program private static string showcomputer string cpu i3 370m string ram 4...