कैसे मैं एक शून्य मान के साथ एक enum बना सकता हूँप्रारंभ enum
पूर्व:
public enum MyEnum
{
[StringValue("X")]
MyX,
[StringValue("Y")]
MyY,
None
}
जहां कोई भी मूल्य है अशक्त या String.Empty
कैसे मैं एक शून्य मान के साथ एक enum बना सकता हूँप्रारंभ enum
पूर्व:
public enum MyEnum
{
[StringValue("X")]
MyX,
[StringValue("Y")]
MyY,
None
}
जहां कोई भी मूल्य है अशक्त या String.Empty
आप की तरह कुछ कोशिश कर सकते हैं इस: -
public MyEnum? value= null;
या आप इस कोशिश कर सकते हैं: -
public MyEnum value= MyEnum.None;
हालांकि उसका प्रश्न उस के लिए पूछता है जवाब यह वह नहीं है जो वह पूछ रहा था। –
मुझे लगता है कि ओपी एक एनम के सदस्य के लिए 'शून्य' मान रखने के लिए कह रहा है। – Oded
@jsobo वे जो पूछ रहे हैं वह असंभव है; यह एक जवाब के रूप में ठीक है IMO –
सभी enum प्रकार मूल्य प्रकार के होते हैं और विभिन्न सदस्यों को भी सदस्य प्रकार से प्राप्त कर रहे (अनुमति प्रकार के होते हैं byte
, sbyte
, short
, ushort
, int
, uint
, long
, या ulong
- documented के रूप में)।
इसका मतलब है कि एक गणना के सदस्य null
नहीं हो सकते हैं। एक डिफ़ॉल्ट enum
मूल्य से निपटने के लिए
एक तरह से पहले मूल्य के रूप में None
मूल्य डाल दिया और एक नकारात्मक मूल्य या 0
(हस्ताक्षरित enums लिए) करने के लिए इसे स्थापित करने के लिए है। myenum?
-
public enum MyEnum
{
[StringValue(null)]
None = -1,
[StringValue("X")]
MyX,
[StringValue("Y")]
MyY
}
आप अगर आप एक नल उदाहरण घोषित एक गणन करने के लिए एक null
संदर्भ हो सकते हैं।
मूल्य किसी के पास हमेशा 0 का मान नहीं होना चाहिए। – erikkallen
@erikkallen - यह हमेशा 0 क्यों होना चाहिए। यह -1 भी हो सकता है, यह वास्तव में किसी भी मूल्य से हो सकता है, जो वास्तव में दी गई स्थिति में वास्तविक मूल्य नहीं हो सकता है। –
क्योंकि एनम के डिफ़ॉल्ट प्रारंभकर्ता एनम को '(MyEnum) 0' पर सेट करेंगे। [FxCop सहमत] [http://msdn.microsoft.com/en-us/library/ms182149 (v = vs.80) .aspx)। शायद कोई भी डिफ़ॉल्ट हमेशा नहीं होना चाहिए, उदाहरण के लिए। यदि आपके पास "नकारात्मक विकल्प" का एक हिस्सा है, तो शायद 'सभी' डिफ़ॉल्ट मान होना चाहिए। – erikkallen
"?" का उपयोग करें एक नालीदार प्रकार के लिए oeprator !!
public MyEnum? myEnum= null;
"शून्य मूल्य के साथ enum" जैसी कोई चीज़ नहीं है। सी # में एक enum सिर्फ एक नामित पूर्णांक है। आपके मामले में, None
2
के लिए केवल एक उपनाम है (पूर्णता के लिए, MyX
0
और MyY
1
है)। डिफ़ॉल्ट रूप से, enum का अंतर्निहित डेटा-प्रकार int
है, लेकिन यह विभिन्न आकार/चिह्न के अन्य पूर्णांक-आधारित आदिम प्रकार भी हो सकता है।
यदि आप "शून्य" enum चाहते हैं, तो आपको MyEnum?
, उर्फ Nullable<MyEnum>
का उपयोग करना होगा।
जैसा कि अन्य सभी उत्तरों ने कहा है, आप नहीं कर सकते हैं एक enum मान शून्य हो। आप कर सकते हैं Description
विशेषता (जैसे StringValue
) जो शून्य मान है।
उदाहरण के लिए:
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute),
false);
if (attributes != null && attributes.Length > 0)
return attributes[0].Description;
else
return value.ToString();
}
उपयोग::
MyEnum e = MyEnum.None;
string s2 = GetEnumDescription((MyEnum)e); // This returns null
'[StringValue (" "
आप निम्न कार्य के साथ Enum का विवरण प्राप्त कर सकते हैं)] 'या' [स्ट्रिंगवैल्यू (शून्य)] 'काम नहीं करता है? – Rawling
यह नहीं करता है: एस –
[संभावित रूप से enum को कैसे सेट करें] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4337193/how-to-set-enum-to-null) –