2009-12-10 21 views
10

के साथ प्रतिनिधि नीचे दिए गए कोड में समान कार्यक्षमता बनाए रखने का कोई तरीका है, लेकिन प्रतिनिधि बनाने के बिना? मैं एक तृतीय-पक्ष एपीआई के साथ इंटरफेसिंग कर रहा हूं जिसमें कई अलग-अलग DeleteSomethingX (ref Inttrtr ptr) विधियां हैं और मैं IntPtr.Zero चेक के लिए कोड को केंद्रीकृत करने का प्रयास कर रहा हूं।रेफ पैरामीटर

private void delegate CleanupDelegate(ref IntPtr ptr); 

... 

private void Cleanup(ref IntPtr ptr, CleanupDelegate cleanup) 
{ 
    if (ptr != IntPtr.Zero) 
    { 
     cleanup(ref ptr); 
    } 
} 
+2

आप वास्तव में क्या करने की कोशिश कर रहे हैं? –

+1

प्रतिनिधि बनाने में क्या गड़बड़ है? – SLaks

+0

क्या आप सुनिश्चित हैं कि तृतीय पक्ष एपीआई एक एनओपी के रूप में एक शून्य सूचक को संभाल नहीं करता है? –

उत्तर

10

यदि आपका प्रतिनिधि प्रतिनिधि प्रकार घोषित किए बिना है, तो शायद नहीं; बहुत कम (यदि कोई है) इनबिल्ट प्रतिनिधि ref का उपयोग करते हैं; लेकिन आप इसे सामान्य बना सकते हैं:

delegate void ActionRef<T>(ref T value); 

मुझे यकीन नहीं है कि यह बहुत बचाता है। भी विस्तार विधियों के साथ यहां कुछ चालें हो सकती हैं, लेकिन बिना किसी विस्तार के बताना मुश्किल है।

संबंधित मुद्दे