2012-10-21 14 views
13
için varsayılan parametre değeri

varsayılan parametre değeri, bir argüman olarak bir IntPtr alan bir işlev kullanmak istiyorum. IntPtr.Zero derleme zamanı sabiti olmadığı için bu mümkün değildir.C#, bir IntPtr

İstediğimi yapabileceğim herhangi bir yolu var mı?

cevap

26

Biraz unintuitive, en hafif deyimiyle, sen yeni operatörünü kullanarak bunu elde:

eğlence içindi
void Foo(IntPtr arg = new IntPtr()) { 
    } 

, muhtemelen tadını bu bir daha:

void Foo(IntPtr arg = default(IntPtr)) { 
    } 
+1

Darn, "varsayılan" ın işe yarayabileceğini bir önsezim vardı, ama kontrol etmek için yakın bir derleyici yok - bu yüzden güvenli oynadı. İyi cevap. –

3

IntPtr bir yapı olduğundan, Nullable-of-T?

static void SomeMethod(IntPtr? ptr = null) { 
    var actualPtr = ptr ?? IntPtr.Zero; 
    //... 
} 
İlgili konular