5

मैं एक कक्षा बनाने की कोशिश कर रहा हूं जहां उपयोगकर्ता सदस्य चर को संशोधित कर सकता है ताकि सदस्य के कार्यों के डिफ़ॉल्ट तर्कों को बदल सके।गतिशील डिफ़ॉल्ट तर्क रखने का कोई तरीका है?

class Class 
{ 
    public int Member; 

    public void Method(int Argument = Member) 
    { 
     // This compiles fine, until I try to actually use 
     // the method elsewhere in code! 

     // "Error: need 'this' to access member Member" 
    } 
} 

मेरा कामकाज अब तक जादू संख्याओं का उपयोग करने के लिए किया गया है, जो स्पष्ट रूप से आदर्श नहीं है।

public void Method(int Argument = 123) 
{ 
    int RealArgument; 

    if (Argument == 123) RealArgument = Member; 
    else RealArgument = Argument; 
} 

क्या कोई बेहतर तरीका है, या क्या मैं इस "हैक" समाधान से फंस गया हूं?

उत्तर

7

हाँ, डिफ़ॉल्ट तर्क के बारे में भूल जाओ।

class Class 
{ 
    public int Member; 

    public void Method(int Argument) 
    { 
     ... 
    } 

    public void Method() 
    { 
     Method(Member); 
    } 
} 

यहां चालबाजी की कोई आवश्यकता नहीं है।

+0

यह कई तर्कों के लिए अव्यवहारिक हो सकता है, लेकिन मिश्रक स्वचालित रूप से कोड उत्पन्न करने में मदद कर सकते हैं। – Maxpm

+0

वैरैडिक टेम्पलेट्स और सावधानीपूर्वक नामकरण का उपयोग करने से आप केवल उस बेस फ़ंक्शन और एकल रैपर टेम्पलेट के साथ उस प्रभाव को प्राप्त कर सकते हैं। – BCS

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

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