मैंने कई जगहों पर पढ़ा है जो सार्वजनिक रूप से खेतों को उजागर करना एक अच्छा विचार नहीं है, क्योंकि यदि आप बाद में गुणों में बदलना चाहते हैं, तो आपको अपनी कक्षा का उपयोग करने वाले सभी कोड को दोबारा जोड़ना होगा।सी #, अपरिवर्तनीयता और सार्वजनिक पाठक फ़ील्ड
हालांकि, अपरिवर्तनीय कक्षाओं के मामले में, मुझे नहीं लगता कि आपको कभी भी गुणों में बदलने की आवश्यकता क्यों होगी - आप 'सेट' में तर्क जोड़ने के लिए नहीं जा रहे हैं।
इस पर कोई विचार, क्या मुझे कुछ याद आ रहा है? अंतर है, जो उन लोगों के पाठ :)
//Immutable Tuple using public readonly fields
public class Tuple<T1,T2>
{
public readonly T1 Item1;
public readonly T2 Item2;
public Tuple(T1 item1, T2 item2)
{
Item1 = item1;
Item2 = item2;
}
}
//Immutable Tuple using public properties and private readonly fields
public class Tuple<T1,T2>
{
private readonly T1 _Item1;
private readonly T2 _Item2;
public Tuple(T1 item1, T2 item2)
{
_Item1 = item1;
_Item2 = item2;
}
public T1 Item1 { get { return _Item1; } }
public T2 Item2 { get { return _Item2; } }
}
बेशक
, तो आप स्वत: गुण इस्तेमाल कर सकते हैं (public T1 Item1 { get; private set; }
) की तुलना में अधिक आसानी से कोड को पढ़ने के लिए है, लेकिन इस के लिए की
उदाहरण सिर्फ तुम 'सहमति अचल स्थिति' हो जाता है के रूप में 'गारंटी अचल स्थिति' के लिए विरोध ...
हम्म, एक "सी # की काल्पनिक नए संस्करण" के बारे में अधिक पढ़ सकते हैं मुझे लगता है कि मुझे पता है कि आप किस ब्लॉग को पढ़ रहे हैं;) – Benjol
हाँ, हम इस पर विचार कर रहे हैं। परिकल्पित। यह वास्तव में पहली नज़र में दिखाई देने की तुलना में एक और अधिक कठिन समस्या है। –
@ एरिक लिपर्ट, अब आप हमें चिढ़ा रहे हैं। मैं जल्द ही कुछ कठिनाइयों के बारे में एक पोस्ट की उम्मीद करता हूं :) – Benjol