अनाम प्रकारों में संपत्ति सेटर्स क्यों नहीं हैं?बेनामी प्रकार संपत्ति सेटर्स
var a = new { Text = "Hello" };
a.Text = "World"; //error
अनाम प्रकारों में संपत्ति सेटर्स क्यों नहीं हैं?बेनामी प्रकार संपत्ति सेटर्स
var a = new { Text = "Hello" };
a.Text = "World"; //error
बेनामी प्रकार डिज़ाइन द्वारा अपरिवर्तनीय हैं।
बेनामी प्रकार मूल्यों को पकड़ने के लिए हैं, और एक प्रकार का प्रतिनिधित्व करने वाला एक प्रकार उत्परिवर्तनीय नहीं होना चाहिए।
इसके अलावा, यह उन्हें एक शब्दकोश में अविश्वसनीय बना देगा, क्योंकि सृजन के बाद हैशकोड बदल सकता है।
कई LINQ विधियां शब्दकोश का उपयोग करती हैं, और विशेष रूप से देरी वाले मूल्यांकन के साथ, परिवर्तनीय प्रकार के साथ LINQ सूक्ष्म रहस्यमय बग का कारण बन सकती है।
वह तेज़ था :-) थेंक्स – Marko
ध्यान दें कि वीबी में अनाम प्रकारों को आंशिक रूप से उत्परिवर्तित करने की अनुमति है। वीबी में आप यह बताते हैं कि गुमनाम प्रकार के कौन से हिस्से उत्परिवर्तनीय हैं; जेनरेट कोड हैश कोड/समानता के हिस्से के रूप में उत्परिवर्तनीय बिट्स का उपयोग नहीं करेगा, इसलिए आपको "शब्दकोश में खो गया" समस्या नहीं मिलती है। हमने इन एक्सटेंशन को सी # में लागू नहीं करने का निर्णय लिया। –
मुझे यह नहीं पता था; धन्यवाद। – SLaks