में परिभाषित वस्तुओं की कुल संख्या मैं enum में परिभाषित वस्तुओं की संख्या कैसे प्राप्त कर सकता हूं?enum
enum
उत्तर
आप स्थिर विधि Enum.GetNames
का उपयोग कर सकते हैं जो enum में सभी आइटमों के नाम का प्रतिनिधित्व करने वाला एक सरणी देता है। इस सरणी की लंबाई संपत्ति enum
var myEnumMemberCount = Enum.GetNames(typeof(MyEnum)).Length;
Enum.GetValues (टाइपोफ (माईएनम))। लंबाई;
आप Enum.GetNames का उपयोग अपने enum में मानों के एक आईनेमरेबल को वापस करने के लिए कर सकते हैं और उसके बाद परिणामी IENumerable।
GetNames GetValues के समान परिणाम उत्पन्न करता है लेकिन तेज़ है।
पिछले उत्तरों से कोड नमूना जोड़ने में परिभाषित वस्तुओं की संख्या के बराबर होती है।
class Program
{
static void Main(string[] args)
{
int enumlen = Enum.GetNames(typeof(myenum)).Length;
Console.Write(enumlen);
Console.Read();
}
public enum myenum
{
value1,
value2
}
}
एक गंधा चाल मैं इस सवाल का एक सी जवाब में देखा था, बस enum करने के लिए एक पिछले तत्व जोड़ सकते हैं और इसका इस्तेमाल को बताने के लिए कि कितने तत्वों enum में हैं:
enum MyType {
Type1,
Type2,
Type3,
NumberOfTypes
}
में मामला जहां आप 0 के अलावा प्रारंभ मूल्य को परिभाषित कर रहे हैं, आप तत्वों की संख्या का पता लगाने के लिए NumberOfTypes - Type1 का उपयोग कर सकते हैं।
मुझे यकीन नहीं है कि यह विधि एनम का उपयोग करने से तेज होगी, और मुझे यह भी सुनिश्चित नहीं है कि इसे करने का उचित तरीका माना जाएगा, क्योंकि हमारे पास एनम हमारे लिए यह जानकारी सुनिश्चित करने के लिए है।
यह अच्छा है क्योंकि मैं इसे एक्सएनए पर कर सकता हूं क्योंकि GetNames उपलब्ध नहीं है –
कूल चाल, यह GetNames() से भी तेज होगा क्योंकि इसे गिनना नहीं है। –
फ़ोरैच के माध्यम से enums के माध्यम से चक्र के बारे में सावधान रहें - आप अपने सरणी के अंत को पढ़ सकते हैं! –
सवाल यह है:
मैं एक enum में परिभाषित मदों की संख्या कैसे मिल सकता है?
"आइटम" की संख्या वास्तव में दो पूरी तरह से अलग चीज़ें हो सकती है। निम्नलिखित उदाहरण पर विचार करें।
enum MyEnum
{
A = 1,
B = 2,
C = 1,
D = 3,
E = 2
}
MyEnum
में परिभाषित "आइटम" की संख्या क्या है?
आइटम की संख्या 5 है? (A
, B
, C
, D
, E
)
या यह 3 है? (1
, 2
, 3
)
नामMyEnum
में परिभाषित की संख्या (5) की गणना इस प्रकार किया जा सकता है।
var namesCount = Enum.GetNames(typeof(MyEnum)).Length;
मूल्योंMyEnum
में परिभाषित (3) की गणना इस प्रकार किया जा सकता है की संख्या।
var valuesCount = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Distinct().Count();
पर सीधे एनम बाइंडिंग से सावधान रहें, इसे शीर्ष पर वोट दिया जाना चाहिए। – Xonatron
अंतिम पंक्ति लिखने का वैकल्पिक तरीका, 'var valuesCount = ((MyEnum []) Enum.GetValues (typeof (MyEnum))। अलग()। गणना(); '। –
विजुअल बेसिक के लिए:
[Enum].GetNames(typeof(MyEnum)).Length
मेरे साथ काम नहीं किया है, लेकिन [Enum].GetNames(GetType(Animal_Type)).length
किया था।
डाउनवोट क्यों? यह मेरी समस्या को ठीक करता है, यह वीबी के लिए सही वाक्यविन्यास है, भले ही सवाल सी # टैग किया गया हो, फिर भी उपयोगी है। –
शायद डाउनवोट्स क्योंकि प्रश्न सी # टैग किया गया है और इस उत्तर में यह उल्लेख नहीं किया गया था कि यह सी # का उपयोग नहीं कर रहा था। – idbrii
मैं अभी इस पर देख रहा था, और वर्तमान समाधान की पठनीयता से खुश नहीं था। यदि आप अनौपचारिक रूप से या एक छोटी परियोजना पर कोड लिख रहे हैं, तो आप केवल "लंबाई" नामक अपने enum के अंत में एक और आइटम जोड़ सकते हैं। इस तरह, आप केवल लिखना होगा: अगर दूसरों को अपने कोड का उपयोग करने जा रहे हैं
var namesCount = (int)MyEnum.Length;
बेशक
- या मैं कई अन्य परिस्थितियों में यह सुनिश्चित करें कि इस मामले में मेरे लिए लागू नहीं किया था हूँ - इस समाधान हो सकता है बीमार से कहीं भी भयानक होने की सलाह दीजिए।
यह भी 0 से शुरू होने वाले enum पर निर्भर करता है (डिफ़ॉल्ट, लेकिन किसी भी तरह से गारंटी नहीं है)। इसके अतिरिक्त, यह सामान्य enum उपयोग * बहुत * उलझन में intellisense बनाता है। यह लगभग हमेशा एक ** भयानक ** विचार है। – BradleyDotNET
इसमें लंबा समय नहीं लगा :) – EnergyWasRaw
दिलचस्प, मुझे लगता है कि आप कभी नहीं जानते कि कुछ बेहतर हो सकता है। मैंने अपने स्वयं के समाधान को चकित करने का अपना सर्वश्रेष्ठ प्रयास किया, लेकिन इसे साझा करने के लिए काफी रोचक पाया! – EnergyWasRaw
यदि आप पाते हैं अपने आप को जितनी बार मैं तो आप इसे एक सामान्य रूप में लागू कर सकता है, जैसा कि ऊपर समाधान लेखन:
public static int GetEnumEntries<T>() where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
throw new ArgumentException("T must be an enumerated type");
return Enum.GetNames(typeof(T)).Length;
}
- 1. enum
- 2. enum
- 3. enum
- 4. enum
- 5. Enum
- 6. enum
- 7. enum
- 8. enum
- 9. enum
- 10. enum
- 11. enum ordinal से enum टाइप
- 12. खाली enum (enum {};) पोर्टेबल है?
- 13. जावा कस्टम enum मूल्य Enum को
- 14. enum valueOf IllegalArgumentException: कोई enum const class
- 15. प्रदर्शन Enum वर्णन Jqgrid बजाय Enum
- 16. सी ++ typedef enum और बस Enum
- 17. स्टोर मानचित्र <Enum, Enum> स्ट्रिंग
- 18. Enum, एक enum में अब भी मौजूद
- 19. सी ++ enum
- 20. प्रारंभ enum
- 21. अज्ञात enum
- 22. enum value
- 23. enum value
- 24. एक enum
- 25. एक enum
- 26. Enum मूल्य
- 27. enum सदस्यों
- 28. बूस्ट :: enum
- 29. सी # enum?
- 30. Enum JQuery
सहमत ... यहां एक लिंक है जो मैंने पाया http://www.csharp411.com/c-count-items-in-an-enum/ –
Enum.GetValues का भी उपयोग कर सकता है। – Xonatron
System.Enum.GetNames, यदि आप पहले से ही सिस्टम नेमस्पेस समेत नहीं हैं। –