Easy creation of properties that support indexing in C# -


सी # में मैं अत्यंत उपयोगी खोजता हूं। उदाहरण के लिए:

  var myObj = नया MyClass (); मायओबज [42] = "हैलो"; Console.WriteLine (myObj [42]);  

हालांकि जहां तक ​​मुझे पता है कि क्षेत्र को समर्थन देने के लिए कोई वाक्यविन्यास चीनी नहीं है, जो स्वयं अनुक्रमण को समर्थन देते हैं (कृपया मुझे सही करें अगर मैं गलत हूं) उदाहरण के लिए:

  var myObj = नया MyClass (); MyObj.field [42] = "हैलो"; Console.WriteLine (myObj.field [42]);  

मुझे इसके लिए जरूरी कारण यह है कि मैं पहले से ही मेरी कक्षा में इंडेक्स प्रॉपर्टी का उपयोग कर रहा हूं, लेकिन मेरे पास GetNumX () , GetX () < / Code>, और SetX () फ़ंक्शन निम्नानुसार है:

  सार्वजनिक int NumTargetSlots {get {return_maker.NumRefs; }} सार्वजनिक संदर्भ लक्ष्य GetTarget (int n) {संदर्भ ReferenceTarget.Create (_Maker.GetReference (n)); } सार्वजनिक शून्य SetTarget (int n, संदर्भ लक्ष्य आरटी) {_Maker.ReplaceReference (n, rt._Target, true); }  

जैसा कि आप संभवतः इन्हें उजागर कर सकते हैं जैसा कि एक अनुक्रमणीय फ़ील्ड संपत्ति अधिक समझदारी होगी। हर बार जब मैं वाक्यात्मक चीनी चाहता हूं, तो मैं इसे प्राप्त करने के लिए एक कस्टम क्लास लिख सकता हूं लेकिन सभी बॉयलरप्लेट कोड सिर्फ अनावश्यक लगते हैं।

इसलिए मैंने बॉयलरप्लेट को आवृत करने के लिए एक कस्टम क्लास लिखा था और यह गुण बनाने के लिए आसान बनाने के लिए जो अनुक्रमित किया जा सकता है। इस प्रकार मैं एक नई प्रॉपर्टी को निम्नानुसार जोड़ सकता हूं:

  सार्वजनिक इंडेक्टेडप्रॉपर्टी & lt; संदर्भक्षेत्र & gt; लक्ष्यअरे {{नई इंडेक्स्डप्रोटीटी & lt; int, ReferenceTarget & gt; (इंट एन) = & gt; GetTarget (एन), (इंट एन, संदर्भ टाटागार्ट आरटी) = & gt; सेटटैग्राज (एन, आरटी)) प्राप्त करें; }}  

इस नई इंडेक्स्डप्रॉपर्टी वर्ग का कोड ऐसा दिखता है:

  पब्लिक क्लास इंडेक्सडप्रॉपर्टी & lt; इंडेक्सटी, वैल्यूटीटीटीटी; {कार्रवाई & lt; इंडेक्सटी, वैल्यूटीटीटीए setAction; फ़ंक्स & lt; इंडेक्सटी, वैल्यूटीटीटीए; getFunc; सार्वजनिक इंडेक्सडप्रॉप्टी (फ़नक & lt; इंडेक्सटी, वैल्यूटीटीटी; गेटफंक, एक्शन & lt; इंडिडेकेट टी, वैल्यूटीटीटीएड; सेट एक्शन) {this.getFunc = getFunc; This.setAction = setAction; } सार्वजनिक वैल्यू इस [अनुक्रमणिका टी i] {प्राप्त getfunc (i) प्राप्त करें; } सेट {setAction (i, value); }}}  

तो मेरा सवाल है: क्या यह सब करने का एक बेहतर तरीका है ?

खैर, विशिष्ट होने के लिए, सूचकांक क्षेत्र की संपत्ति बनाने के लिए सी # में एक और मुहावरेदार तरीका है, और यदि मैं अपने IndexedProperty वर्ग को कैसे सुधार नहीं सकता?

संपादित करें: आगे शोध के बाद, जॉन स्कीट इसे "" कहते हैं।

ठीक है, सबसे सरल है संपत्ति को वापस लाने के लिए एक वस्तु है जो IList लागू करती है।

याद रखें कि सिर्फ इसलिए कि यह आईएलआईटी लागू करता है इसका मतलब यह नहीं है कि स्वयं संग्रह, बस कुछ तरीके लागू करता है।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -