2012-10-21 3 views
13

के लिए डिफ़ॉल्ट पैरामीटर मान मैं IntPtr.Zero के एक डिफ़ॉल्ट पैरामीटर मान का उपयोग करना चाहता हूं जो एक तर्क के रूप में IntPtr लेता है। यह संभव नहीं है क्योंकि IntPtr.Zero संकलन समय स्थिर नहीं है।सी #, एक इंटिप्टर

क्या कोई तरीका है जो मैं कर सकता हूं जो मैं चाहता हूं?

उत्तर

26

कुछ हद तक unintuitive, यह हल्का डाल करने के लिए, आप इसे नई ऑपरेटर का उपयोग करके मिलती है:

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

कि मनोरंजन के लिए था, तो आप शायद का आनंद यह एक बेहतर:

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

डारन, मेरे पास एक झुकाव था कि "डिफ़ॉल्ट" काम कर सकता है, लेकिन चेक करने के लिए आस-पास कोई कंपाइलर नहीं है - इसलिए इसे सुरक्षित खेला गया। अच्छा उत्तर। –

3

IntPtr एक संरचना है, तो आप Nullable-of-T का उपयोग कर सकते हैं?

static void SomeMethod(IntPtr? ptr = null) { 
    var actualPtr = ptr ?? IntPtr.Zero; 
    //... 
} 
संबंधित मुद्दे