2016-08-30 24 views
18

İki aşırı yükleme yöntemiyle aşağıdaki gibi bir sınıfım var.İsteğe Bağlı Parametreyle Yöntem Aşırı Yüklemesi

Class A 
{ 
    public string x(string a, string b) 
    { 
     return "hello" + a + b; 
    } 

    public string x(string a, string b, string c = "bye") 
    { 
     return c + a + b; 
    } 
} 

İki parametrelerle başka bir sınıftan bir yöntem x ararsanız, o hangi yöntemin infaz edecekler ve neden? yani,

string result = new A().x("Fname", "Lname"); 

Bunu konsol uygulamamda denedim ve 2 parametreli yöntem yürütün. Birisi bunu açıklayabilir mi?

+0

Temelde: sen bu kod bir derleme zamanı hatası vermez şaşırıyorum ... – Bakuriu

+6

bunu kullanmak asla beri bu durumda varsayılan değere sahip tamamen işe yaramaz. –

cevap

21

adlandırılır ve isteğe bağlı argümanlar kullanılması aşırı çözünürlüğünü etkiler: iki aday aynı derecede iyi olduğuna karar ise, tercih argümanlar ihmal edildiği için isteğe bağlı parametreleri sahip olmayan bir aday kazanır

aramak. Bu, daha az parametresine sahip olan adaylar için genel bir tercihinin aşırı yüklenme sonucunun bir sonucudur.

Referans: MSDN


2 parametreleri string x(string a,string b) Yukarıdaki kural yöntemi ima çağrılır.

Not: Her iki aşırı yüklenmiş yöntemde isteğe bağlı parametreler varsa, derleyici derleme zamanı belirsizlik hatası verir.

+5

Derleme, bir derleme zamanı *** belirsizlik hatası verecektir :) –

+1

not edildi ve düzeltildi. Teşekkürler. – JerryGoyal

4

iki parametreli Yöntemi ararsanız, iki Parametreler ile Yöntem kullanır. Üç ile birini çağırırsan, diğerini kullanırdı.

0

Her zaman kesin hiçbir parametrelerin ait olan ilk maç, sizin durumunuzda o çalıştırır yöntemini çalıştırır:

Opsiyonel parametre yöntemi öncelik kesin hiçbir parametrelerin ile fonksiyonu az sonra

public string x(string a, string b);