मैं सामान्य शब्दों में अपना उदाहरण phrasing कर रहा हूं क्योंकि यह मेरे विशिष्ट समस्या विवरण में बिना किसी बिंदु के पूरे बिंदु को प्राप्त करता है।स्ट्रिंग्स या अन्य सीलबंद कक्षाओं के लिए स्ट्रॉन्ग-टाइपिंग
मान लीजिए कि आपके पास पैरामीटर के रूप में तारों को लेने के तरीकों का एक समूह था। मान लीजिए कि एक स्ट्रिंग एक व्यक्ति का "पहला नाम" था और दूसरा व्यक्ति का "अंतिम नाम" था। "पसंदीदा भोजन" जैसे अन्य तार हो सकते हैं।
अब, आपके कोड में, आप रनटाइम बग ढूंढते रहते हैं क्योंकि आप पैरामीटर को मिश्रित कर रहे हैं। आप "पहला नाम" और "अंतिम नाम" का ऑर्डर स्विच कर सकते हैं या जब आप दूसरे का उपयोग करना चाहते हैं तो इसका उपयोग कर सकते हैं। दृढ़ता से टाइप की गई भाषाओं का मूल्य यह है कि यह इन बग को रनटाइम के बजाए बिल्ड समय पर मिलेगा।
तो, एक संभावित समाधान केवल स्ट्रिंग से कक्षाएं प्राप्त करना होगा।
public class FirstName : String
{
}
public class LastName : String
{
}
अब, यदि आप गलत प्रकार की स्ट्रिंग पारित करते हैं तो संकलक शिकायत करेगा। उपरोक्त संभव नहीं है क्योंकि स्ट्रिंग को सील कर दिया गया है। इसके अलावा, "उपयोग" कथन काम नहीं करेगा (मुझे लगता है) क्योंकि जब मैं उन्हें मिश्रण करता हूं तो संकलक शिकायत नहीं करेगा।
using LastName = String;
ज़रूर, मैं वर्गों है कि स्ट्रिंग लपेटो और फिर डाली रूपांतरण तरीकों बारे में बना सकते हैं, लेकिन यह अधिक परेशानी की तरह लगता है की तुलना में इसके लायक है।
कृपया अपने शीर्षक "सी #" और इस तरह से उपसर्ग न करें। टैग के लिए यही है। –
क्यों अधिक मजबूत टाइपिंग के साथ जीवन को कठिन बनाने के बजाय, पैरामीटर समस्याओं के चारों ओर स्विचिंग या ऑर्डर करने के लिए नामित तर्कों (सी # के वीएस -2010 संस्करण में पेश किया गया) का उपयोग क्यों नहीं करें? http://msdn.microsoft.com/en-us/library/dd264739.aspx –