असल में मैं दूसरी शैली पसंद करते हैं बजाय: यदि आप 'क्लास' ऑब्जेक्ट प्रदान, तो आपको निम्न वाक्यात्मक तुनुकमिज़ाजी प्राप्त कर सकते हैं वास्तविक मूल्य संशोधित होने की उम्मीद है। हालांकि आपको यह इंगित करने की आवश्यकता हो सकती है कि ModifyIt यह इंगित करने के लिए कि एक वास्तविक सी संशोधित किया जाएगा, एक रेफरी चर स्वीकार करता है। सी यहां मूल्य से गुजरता है, हालांकि यह एक संदर्भ प्रकार है, फिर भी संदर्भ के प्रकार को पारित करने और रेफरी द्वारा संदर्भ प्रकारों को पारित करने के बीच अभी भी एक अंतर है।
public void ModifyIt(Myclass c) { c = new MyClass(); }
उपरोक्त मामले में
ग चर (यानी संदर्भ से एक प्रति पारित कर दिया और एक नव instanitiated वस्तु, जो बारी में है कि आप का मतलब है को इंगित करने के लिए संशोधित किया जाएगा मूल्य द्वारा पारित हो जाएगा: निम्न देखें इस मामले में प्रकार MyClass के दो वस्तुओं होगा यहाँ एक उदाहरण है वर्णन करने के लिए:।
Myclass s = new MyClass() { prop = "value" }; ModifyIt(s); Console.WriteLine(s.prob); // this will print "value"
हालांकि MOdifyIT एक नई वस्तु को referenct जो कि समस्या मतलब यह होना चाहिए instanitaited अशक्त के लिए शुरू हो जाएगा, यह वास्तव में नहीं था ' टी तत्काल, यह सी की विपरीत प्रतिलिपि बना दिया अगर एसई द्वारा पारित किया गया था।
आशा है कि इससे मदद मिलती है!
आप ModifyIt() के पैरामीटर के रूप में 'कक्षा x' क्यों पारित कर रहे हैं? क्या आपकी विधि क्लास इंस्टेंस को 'इस' के रूप में नहीं ले जाएगी? कोड को देखते हुए आपके पास चेनिंग के बारे में अन्य सभी उत्तर वास्तव में काम नहीं करेंगे। मेरे लिए सवाल यह होगा कि यदि आपकी कक्षा एक मूल्य प्रकार से अधिक है, तो इस मामले में आपको अपने उदाहरणों को संशोधित नहीं करना चाहिए, बल्कि ऑपरेशन के परिणामस्वरूप एक नया खाता वापस करना चाहिए। – van