2011-08-04 12 views

cevap

64

kullanıyorum, 4.0 benim için çalışıyor ve yeni bir referans atarsanız, arama bağlamında erişilebilir olmazdı. Ayrıca aşağıdaki (a List<T> durumunda null) derleme zamanı sabiti IS default kullanarak bunu edebilir

+1

+1 yaptığım iş bu kadar hızlı ve hızlı! –

+0

İyi fikir. (Listeyi oluşturduğunuz yerden "yeni" yi kaçırıyorsunuz) – heisenberg

+0

evet, teşekkürler. Gönderiyi düzenledim. – Vasea

-7

Eğer new List<string>() kullandınız mı derleme zamanında sabit olmak zorunda çünkü onlar çalışmaz?

+4

Değil derleme zamanı sabiti bu deneyin vermedi. – Domenic

2

Bu imkansız. Bunun yerine yöntem aşırı yüklemesini kullanmalısınız.

public static void MyMethod(int x, List<string> y) { } 
public static void MyMethod(int x) 
{ 
    MyMethod(x, Enumerable<string>.Empty()); 
} 
+0

Bu imkansız değildir: http://msdn.microsoft.com/en-us/library/dd264739.aspx –

+1

Boş bir liste gibi derlenmeyen bir zaman sabitinin varsayılan değer olarak olması imkansızdır. C# 'deki parametreler için varsayılan değerleri kullanabileceğinizi biliyorum ... – Domenic

+1

Ancak, bu tek çözüm veya 4.0'dan önceki bir C# sürümünü kullanan herkes olurdu. – shmeeps

2
private void test(List<string> optional = null) 
    { 

    } 

yerine listenin dize üzgünüm. Boş i sadece

public void Process(string param1, List<string> param2 = null) { 
    param2 = param2 ?? new List<String>(); 
} 

"param2" boş olduğunu, bu sorun olup olmadığını boş kaynaştırma operatörü ve boş listesi örneğini kullanmak görsel stüdyo 2010

+0

Bu 'dize' değil,' Liste ' – Domenic

+0

Düzeltildi ve derleyin. – Drake

+0

Bu derler, ancak –

5

:

void DoSomething(List<string> lst = default(List<string>)) 
{ 
    if (lst == default(List<string>)) lst = new List<string>(); 
} 
+0

Benim durumumda en iyi çözüm! – MozzieMD

İlgili konular