c# = operator problem -


सी # में, मेरे पास एक सरल 3 डी वेक्टर क्लास है।

  स्थिर शून्य मुख्य (स्ट्रिंग) [] आर्ग्स) {वेक्टर 3 डी ए, बी; ए = नया वेक्टर 3 डी (0, 5, 10); बी = नया वेक्टर 3 डी (0, 0, 0); बी = ए; A.x = 10; कंसोल.प्रकाश रेखा ("वेक्टर ए =" + a.ToString ()); कंसोल.प्रकाश रेखा ("वेक्टर बी =" + बी। टॉस्ट्रिंग ()); Console.ReadKey (); }  

आउटपुट है,

वेक्टर ए = 10, 5, 10

वेक्टर बी = 10, 5, 10

मैं कुरकुरा को 10 में बदलने से पहले असाइन करता हूं। इसलिए मुझे उम्मीद है

वेक्टर ए = 10, 5, 10

वेक्टर बी = 0, 5, 10

मैं समझता हूं कि = ऑपरेटर एक सूचक की तरह ऑब्जेक्ट के संदर्भ को निर्दिष्ट करता है? और सी # मैं खिचड़ी भाषा के अधिभार = ऑपरेटर में

क्या मुझे हर प्रॉपर्टी को मैन्युअल रूप से असाइन करना है?

हां, क्योंकि विक्जर 3 डी एक वर्ग यह बिल्कुल सही है।

कक्षाएं संदर्भ प्रकार हैं और आपका b = a; कथन Vector3D उदाहरण की प्रतिलिपि नहीं करता है, लेकिन इसका संदर्भ उदाहरण।

यदि आप उदाहरणों को क्लोन करना चाहते हैं, तो आप आईसीलेनेबल इंटरफ़ेस जोड़ सकते हैं, लेकिन यह अधिक या कम छोड़ दिया गया है।

एक & lt; X, Y, Z & gt; प्रकार के लिए एक बेहतर समाधान यह एक संरचना बनाने के लिए हो सकता है संवर्धन मूल्य प्रकार हैं और b = a; का अर्थ बदल जाएगा (जो आप चाहते हैं)।

एक 3D बिंदु एक संरचना (छोटा, कोई पहचान) के लिए सभी मापदंडों को पूरा नहीं करता है। पसंदीदा तरीका इसे अपरिवर्तनीय के रूप में डिजाइन करना है।


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? -