सी # में, मैं "स्मार्ट" enums बनाना चाहता हूं, जावा में तरह की तरह संभव है, जहां केवल अंतर्निहित int की तुलना में एनम मान से जुड़ी अधिक जानकारी है। मैं निम्नलिखित सरल उदाहरण के रूप में, (एक enum के बजाय) एक वर्ग बनाने की एक योजना पर हुआ:सी # उत्परिवर्तन - वीएस कोड विश्लेषण मुझे CA2104 दे रहा है? लगता है ... गरीब। क्या मैं गलतफहमी कर रहा हूं?
public sealed class C
{
public static readonly C C1 = new C(0, 1);
public static readonly C C2 = new C(2, 3);
private readonly int x;
private readonly int y;
private C(int x, int y)
{
this.x = x;
this.y = y;
}
public int X
{
get
{
return this.x;
}
}
public int Y
{
get
{
return this.y;
}
}
}
लेकिन जब मैं उस पर दृश्य स्टूडियो के "कोड विश्लेषक" चलाने के लिए, यह देता है मुझे C2104 चेतावनी, " केवल म्यूटेबल संदर्भ प्रकारों को पढ़ने की घोषणा न करें "।
मुझे लगता है कि आप आम तौर पर केवल म्यूटेबल संदर्भ प्रकारों को पढ़ने की घोषणा नहीं करना चाहते हैं, लेकिन ... मेरी कक्षा उत्परिवर्तनीय नहीं है, है ना?
चेतावनी के लिए दस्तावेज़ों को पढ़ना, ऐसा लगता है जैसे वे मानते हैं कि कोई भी पढ़ा गया केवल संदर्भ प्रकार उत्परिवर्तनीय है। उदाहरण के लिए, यह कहता है कि यदि वास्तव में प्रकार अपरिवर्तनीय है, तो इस चेतावनी को दबाने के लिए स्वतंत्र महसूस करें।
public sealed class C
{
public static readonly C C1 = new C();
public static readonly C C2 = new C();
private C()
{
}
}
तो, ठीक है, जब तक कि मैं गंभीरता से अस्थिरता गलत समझ रहा हूँ, CA2104 यह नहीं समझती: और वास्तव में यह मेरा पीछा भी सरल वर्ग के लिए एक ही चेतावनी देता है। और यह मेरी सिफारिश है कि प्रत्येक पंक्ति के लिए चेतावनी को दबाने के लिए जहां तक यह आता है, जब तक मुझे यकीन है कि कक्षा वास्तव में अपरिवर्तनीय है। लेकिन:
(1) तो जब तक कि मैं पूरी तरह से इस चेक को बंद नहीं कर देता, मुझे इसे हर बार दबाया जाना चाहिए जब तक कि मैं कभी भी एक अपरिवर्तनीय पठन सदस्य का उपयोग नहीं करता, जिसे मैं किसी भी दिए गए गणना के लिए कई बार कर सकता हूं?
(2) लेकिन बदतर है, भले ही मुझे लगता है कि, तो किसी को बाद में गलती से अस्थिरता लागू कर सकते हैं, लेकिन किसी और अभी भी इस तथ्य के द्वारा दिए गए सुरक्षा की झूठी भावना होगा कि किसी को मैन्युअल रूप से वहाँ दमन कर दिया कह कर "मैं जाँच और यह अपरिवर्तनीय है "?
मैं एक ऐसी ही प्रश्न था: http://stackoverflow.com/questions/15740025/the-ca2104-warning-is-there-any-way-to-mark-a-class-as-immutable- –