स्ट्रिंग इन सी # अपरिवर्तनीय और थ्रेडसेफ हैं। लेकिन जब आपके पास सार्वजनिक गेटर संपत्ति होती है तो क्या होता है? इस तरह:एक स्ट्रिंग संपत्ति खुद थ्रेडसेफ है?
public String SampleProperty{
get;
private set;
}
हम दो धागे है और पहले 'प्राप्त' बुला रहा है और दूसरे को "एक ही" समय में 'सेट' है, तो क्या होगा?
IMHO सेट इस तरह धागे की सुरक्षा के लिए एक ताला बनाया जाना चाहिए: परमाणु होने की गारंटी तो वहाँ
private string sampleField;
private object threadSafer = new object();
public String SampleProperty{
get{ return this.sampleField; }
private set{
lock(threadSafer){
sampleField = value;
}
}
}
"आवश्यकता" है: संपत्ति के उपयोग (पढ़ने) के सभी धागे एक ही/सबसे अद्यतित मूल्य होना चाहिए। लेकिन केवल वस्तु ही मूल्य को संशोधित करती है। कीवर्ड 'अस्थिर' को इसकी गारंटी देनी चाहिए, या नहीं? – TomTom