2013-02-28 30 views
5

params parametresini daha fazla kez görebildiğimden ve her zaman anlamını düşünmeden çıkardığınızdan gördüm. Şimdi amacını öğrendim. Yeni öğrendiklerim, params parametresinin parametre listesindeki sonuncu olması gerektiğidir. Ama bu, varsayılan bir değere sahip olan parametreler hakkında öğrendiğim şeydir. Örnek: Ben params kullanmaya gerek ise yukarıdaki gibi varsayılan bir değer belirtmek gerekirse params Varsayılan parametre değerleri olan parametre

MyMethod(string Name, int blah=0). 

Yani soru, bu

yapılabilir? Eğer öyleyse, hangisi son ilan edilmelidir? Örnek: Yardımınız için tekrar

MyMethod(int blah=0, params string[] variableData). 

teşekkürler. James

+0

:

Ancak, daha sonra yöntem arayamazsınız ve ayrıca isteğe bağlı parametre belirtmeden (boş olmayan bir dizi için) şeylerden params tarafında yararlanmak? –

+0

http://stackoverflow.com/questions/3948971/c-sharp-4-0-optional-parameters-and-params-do-not-work-together – Guy

+0

Mükemmel bir şekilde bunu yapma hakkını düşünüyorum. o. –

cevap

3

Sizin örnek doğrudur:

public void TestMethod(string name = "asdasd", params int[] items) 
{ 
} 

params bundan önce kullanılan hangi parametre olursa olsun, son olmak zorundadır.

+0

Merhaba MarinJuraszek. Cevabınızın sadeliği için teşekkürler. Dün gece yeni bir dizüstü bilgisayarım var ve nihayet sonuçları görmek için senaryolarımı test edebildim. Görüyorum ki kesinlikle haklısın! – iDevJunkie

4

Evet, params burada özel bir durum vardır - onlar bir parametre olmadan varsayılan bir değer varsayılan değer olan bir sonra gelebilir tek durumdur sensin. Bunu çalışmıyorum neden

MyMethod(5, "x", "y");       // Fine, no defaulting 
MyMethod(variableData: new string[] { "x", "y"}); // Default for blah 
MyMethod();          // Default for blah, empty variableData 
MyMethod(new string[] { "x, "y" });    // Invalid 
MyMethod("x", "y");        // Invalid 
+0

Eğlence gerçeği: varsayılan parametre değerlerini eklediğinizde ve yeniden derlediğinizde, derleyici yuvarlak olur ve bu varsayılan parametreleri yönteminize yapılan çağrılara ekler - zor yoldan çıktı. – JerKimball

+0

@JerKimball: Evet, yapardı. Varsayılan parametreler bu şekilde çalışır - arama alanına işlenirler. –