मैं ऑटो-कार्यान्वित गुणों का उपयोग कर रहा हूं। मुझे लगता है कि निम्नलिखित को ठीक करने का सबसे तेज़ तरीका है अपना बैकिंग वैरिएबल घोषित करना?रिटर्न वैल्यू त्रुटि को संशोधित नहीं कर सकता C#
public Point Origin { get; set; }
Origin.X = 10; // fails with CS1612
त्रुटि संदेश: 'अभिव्यक्ति' क्योंकि यह एक चर
का प्रयास एक मूल्य के प्रकार है कि एक मध्यवर्ती का परिणाम था संशोधित करने के लिए बनाया गया था नहीं है के रिटर्न मान संशोधित नहीं कर सकते अभिव्यक्ति। क्योंकि मान जारी नहीं है, मान अपरिवर्तित होगा।
इस त्रुटि को हल करने के लिए, अभिव्यक्ति का परिणाम मध्यवर्ती मान में संग्रहीत करें, या मध्यवर्ती अभिव्यक्ति के लिए संदर्भ प्रकार का उपयोग करें।
यह एक और उदाहरण है कि क्यों परिवर्तनीय मूल्य प्रकार एक बुरा विचार है। यदि आप मूल्य प्रकार को म्यूट करने से बच सकते हैं, तो ऐसा करें। –
निम्नलिखित कोड लें (एक निश्चित ईएल :-) द्वारा ब्लॉग किए गए एएसटर कार्यान्वयन में मेरे प्रयासों से, जो एक मान प्रकार को बदलने से नहीं बचा सकता: कक्षा पथ: IENumerable जहां टी: इनोड, नया() {... } सार्वजनिक हेक्सनोड (int x, int y): यह (नया प्वाइंट (x, y)) {} पथ पथ = नया पथ (नया टी (x, y)); // त्रुटि // बदसूरत ठीक पथ पथ = नया पथ (नया टी()); पथ। LastStep.Centre = नया प्वाइंट (एक्स, वाई); –