तो मैं अपने निर्माता में एक भी स्ट्रिंग पैरामीटर के साथ एक वर्ग है के तर्कों को मान्य करने का सही तरीका क्या है:एक निर्माता
public MyClass(string name)
{
this.Name = name;
}
लेकिन मैं कभी नहीं कुछ एक MyClass का एक उदाहरण आरंभ के बारे में चिंता करना चाहते हैं नाम के साथ जो शून्य या शून्य लंबाई स्ट्रिंग है। पैरामीटर को सत्यापित करने के लिए सबसे अच्छा क्या था? किसी संपत्ति या विधि के साथ आप हमेशा कुछ भी नहीं कर सकते हैं, शून्य वापस कर सकते हैं, या अमान्य तर्क प्रदान किए जाने पर कुछ भी सेट नहीं कर सकते हैं। लेकिन एक बार कन्स्ट्रक्टर को ऑब्जेक्ट का उदाहरण कहा जाता है, इस पर ध्यान दिए बिना कि यह वैध तर्क पारित किया गया है या नहीं।
एक अपवाद फेंक रहा है जैसा कि नीचे दिखाया गया है? या क्या कोई और तरीका है जो अधिक पसंद किया जाता है?
public MyClass(string name)
{
if (name == null | name == "") throw new ArgumentException("Name can not be null or blank", "name");
this.Name = name;
}
बेशक मैं हमेशा "बेनाम MyClass" की तरह कुछ डिफ़ॉल्ट करने के लिए नाम सेट कर सकते हैं यदि आर्ग्यूमेंट अवैध है, लेकिन इस मामले में मैं नहीं बल्कि सिर्फ तो गलत नाम को रोकने चाहते हैं कुछ वैकल्पिक व्यवहार ग्रहण करने के लिए कोशिश कर रहा।
बहुत करते समय सावधान रहें कंस्ट्रक्टर्स में अपवाद फेंक आप लीक संसाधनों अगर यो के साथ खत्म हो सकता है आपने संसाधनों को हथियाने/स्मृति आवंटित करना शुरू कर दिया है – Matt
किसी भी तरह से, यह नहीं किया जाएगा || (तार्किक या) और नहीं | (बिटवाईर या)? बस सोच रहा। –
@ ब्लेनक, हाँ, मैंने कॉपी और पेस्ट का इस्तेमाल किया। आश्चर्यजनक रूप से मेरा उपयोग ओपी की बग से वास्तव में प्रभावित नहीं था। :) –