मेरे पास दो readonly int
क्षेत्रों के साथ एक वर्ग है । वे गुणों के रूप में उजागर होते हैं:
public class Thing
{
private readonly int _foo, _bar;
/// <summary> I AM IMMUTABLE. </summary>
public Thing(int foo, int bar)
{
_foo = foo;
_bar = bar;
}
public int Foo { get { return _foo; } set { } }
public int Bar { get { return _bar; } set { } }
}
हालांकि, इसका मतलब है कि निम्नलिखित पूरी तरह से कानूनी कोड है:
Thing iThoughtThisWasMutable = new Thing(1, 42);
iThoughtThisWasMutable.Foo = 99; // <-- Poor, mistaken developer.
// He surely has bugs now. :-(
काम करने वाले कीड़े यह मानते हैं कि काम करना निश्चित है। ज़रूर, गलत डेवलपर को डॉक्स पढ़ना चाहिए। लेकिन यह इस तथ्य को नहीं बदलता है कि कोई संकलन- या रन-टाइम त्रुटि ने उसे समस्या के बारे में चेतावनी नहीं दी।
Thing
वर्ग को कैसे बदला जाना चाहिए ताकि देवता उपरोक्त गलती करने की संभावना कम हो?
एक अपवाद फेंको? प्रॉपर्टी के बजाय गटर विधि का उपयोग करें?
Interfaces
। मुझे यकीन नहीं है कि मैं क्या कर रहा हूँ।