2012-10-21 26 views
13

我想這需要一個IntPtr作爲自變量的函數中使用的IntPtr.Zero默認參數值默認參數值。這是不可能的,因爲IntPtr.Zero不是編譯時間常量。C#,對於一個IntPtr

有什麼辦法,我可以做我想做什麼?

回答

26

有點不直觀,說得客氣一點,通過使用運營商處獲得它:

void Foo(IntPtr arg = new IntPtr()) { 
    } 

這是爲了好玩,你可能會喜歡這更好:

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

該死的,我有一個預設「默認」可能工作,但沒有編譯器附近檢查 - 所以玩它安全。好答案。 –

3

由於IntPtr是一個結構,你可以使用可空-的-T?

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