2012-09-02 13 views
5

मैं offset नामक एक ज्यामिति फ़ंक्शन के लिए वैकल्पिक तर्क पारित करने का प्रयास कर रहा हूं, जिसे निर्दिष्ट किया जा सकता है या नहीं, लेकिन सी # मुझे निम्नलिखित में से कोई भी करने की अनुमति नहीं देता है। क्या इसको मदद देने का कोई तरीका है?क्यों पॉइंट और आयत वैकल्पिक पैरामीटर के रूप में उपयोग नहीं किया जा सकता है?

  • डिफ़ॉल्ट के रूप में अशक्त

    त्रुटि: प्रकार 'का मान' क्योंकि वहाँ टाइप करने के लिए कोई मानक रूपांतरण हैं एक डिफ़ॉल्ट पैरामीटर के रूप में नहीं किया जा सकता 'System.Drawing.Point'

    public void LayoutRelative(.... Point offset = null) {} 
    
  • डिफ़ॉल्ट के रूप में खाली

    त्रुटि: डिफ़ॉल्ट के लिए 'ऑफसेट' पैरामीटर मान एक संकलन समय निरंतर

    public void LayoutRelative(.... Point offset = Point.Empty) {} 
    

उत्तर

11

अपने डिफ़ॉल्ट मान किसी विशेष प्रारंभ की आवश्यकता नहीं है, तो आप एक नल प्रकार का उपयोग करें या अलग अलग भार के बनाने के लिए की जरूरत नहीं है होना चाहिए। आप default कीवर्ड का उपयोग कर सकते हैं: आप एक नल प्रकार के बजाय उपयोग करना चाहते हैं

public void LayoutRelative(.... Point offset = default(Point)) {} 

:

public void LayoutRelative(.... Point? offset = null) 
{ 
    if (offset.HasValue) 
    { 
     DoSomethingWith(offset.Value); 
    } 
} 
+0

मुझे दिखाएँ कैसे व्यर्थ तरीके से उपयोग करने और मैं अपने जवाब को स्वीकार करेंगे। वह लड़का जिसने अभी अपना जवाब हटा दिया था। –

+0

बहुत बहुत धन्यवाद। –

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

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