मुझे कुछ सरल रैपर वर्ग के साथ समस्या है।सी # नकल असाइनमेंट ऑपरेटर को ओवरराइड कर रहा है (=)
यह इस तरह दिखता है:
public class Wrapper<T>
{
private T _value;
public Wrapper<T>(T value)
{
_value = value;
}
public static implicit operator Wrapper<T>(T value)
{
return new Wrapper<T>(value);
}
public static implicit operator T(Wrapper<T> value)
{
return value._value;
}
}
मैं से और टी करने के लिए अंतर्निहित कन्वर्टर्स ओवरराइड किया है, इसलिए यह लगभग टी खुद का एक उदाहरण की तरह व्यवहार करता है।
उदा।
Wrapper<int> foo = 42;
हालांकि मैं एक मामूली समस्या है जब दूसरे के लिए आवरण का एक उदाहरण बताए, के बाद से मैं सिर्फ दूसरा आवरण वर्ग के मान देना चाहते हैं मिल गया है।
तो अभी, मैं यह करने के लिए है:
Wrapper<int> foo = 42;
Wrapper<int> bar = (int)foo;
या एक संपत्ति के माध्यम से सार्वजनिक रूप से _value बेनकाब।
हालांकि यह एक पुस्तकालय में है, और मैं नहीं चाहता कि उपयोगकर्ता इसे याद रखने पर निर्भर करे, क्या आप लोगों को कोई विचार है कि मैं असाइनमेंट ऑपरेटर को ओवरराइड करने की नकल कैसे कर सकता हूं?
पॉइंटर को बदलने में समस्या (जैसा कि यह किसी अन्य वर्ग को आवंटित करते समय करता है), यह है कि मुझे इन रैपर ऑब्जेक्ट्स के पॉइंटर्स का एक शब्दकोश मिला है, इसलिए मैं उन्हें हर समय बदल नहीं सकता, क्योंकि शब्दकोश तब मिलान करना बंद कर देगा।
अगर यह कुछ हद तक भ्रामक है मैं देख सकता हूँ, इसलिए यदि मैं महत्वपूर्ण कुछ भी, :-)
क्या यह कभी हल किया गया था? मुझे एक ही समस्या है - सिवाय इसके कि मैं बुनियादी प्रकारों को लपेटने के लिए कुछ बना रहा हूं उदा। फ्लोट करें और MyType < float > ए = 1 एफ करने में सक्षम होना चाहते हैं; ए = 2 एफ; एक नया उदाहरण बनाने के बिना ... संदर्भ वास्तव में जादू द्वारा अद्यतन मिलता है? मैं बस कोशिश करता हूं लेकिन मुझे विश्वास नहीं है कि यह एक अच्छा प्रयोग है क्योंकि यदि यह काम करता है तो यह सभी के लिए अंधेरा भाग्य हो सकता है ... – jheriko