क्या VB.net में Enums को गठबंधन करने का कोई तरीका है?संयोजन एनम्स
उत्तर
मुझे विश्वास है कि आप क्या चाहते हैं एक ध्वज प्रकार enum है।
आपको एनम के शीर्ष पर ध्वज विशेषता जोड़ने की आवश्यकता है, और फिर आप 'या' कीवर्ड के साथ enums को जोड़ सकते हैं।
इस तरह:
<Flags()> _
Enum CombinationEnums As Integer
HasButton = 1
TitleBar = 2
ReadOnly = 4
ETC = 8
End Enum
नोट: सही करने के लिए संख्या हमेशा दो बार के रूप में बड़ी (2 की शक्तियों) कर रहे हैं - इस व्यक्ति झंडे कि निर्धारित किया गया है अलग करने के लिए सक्षम होने के लिए की जरूरत है।
या कीवर्ड का उपयोग कर वांछित झंडे संयुक्त करें:
जांच करने के लिए क्या सेट किया गया है enum में
Dim settings As CombinationEnums
settings = CombinationEnums.TitleBar Or CombinationEnums.Readonly
यह शीर्षक पट्टी और केवल पढ़ने के लिए सेट:
If (settings And CombinationEnums.TitleBar) = CombinationEnums.TitleBar Then
Window.TitleBar = True
End If
यदि आप enum flags() का उपयोग करने के बारे में लेते हैं तो एक अच्छा लेख here है।
यदि मैं आपके प्रश्न को सही ढंग से समझता हूं तो आप विभिन्न enum प्रकारों को गठबंधन करना चाहते हैं। तो एक चर परिवर्तक दो अलग-अलग enum के दाहिनी ओर से एक मूल्य स्टोर कर सकते हैं? यदि आप एक enum प्रकार के दो अलग-अलग मानों को संयोजित करने के बारे में पूछ रहे हैं तो आप डेव आर्केल के स्पष्टीकरण
एन्म्स कुछ वाक्य रचनात्मक चीनी के साथ पूर्णांक हैं। इसलिए यदि आप सुनिश्चित करते हैं कि कोई ओवरलैप नहीं है तो आप उन्हें int में कास्टिंग करके जोड़ सकते हैं।
हालांकि यह सुंदर कोड के लिए नहीं होगा। मैं ज्यादातर समय enums का उपयोग करने से बचने की कोशिश करता हूँ। आम तौर पर यदि आप अपने कोड में नस्लों की नस्ल देते हैं तो यह बार-बार केस स्टेटमेंट और अन्य गन्दा एंटीपार्टर्न को जन्म देने से पहले ही समय की बात है।
संयोजन के लिए महत्वपूर्ण Enum
रों सुनिश्चित करें कि मूल्य दो (1, 2, 4, 8, आदि) की एक शक्ति है कि आप उन्हें (|=
&=
) पर थोड़ा कार्रवाई कर सकते हैं बनाने के लिए है। उन Enum
एस को Flags
विशेषता के साथ टैग किया जा सकता है। विंडोज फॉर्म नियंत्रण पर Anchor
संपत्ति इस तरह के नियंत्रण का एक उदाहरण है। यदि इसे ध्वज के रूप में चिह्नित किया गया है, तो विजुअल स्टूडियो आपको प्रॉपर्टी डिज़ाइनर में ड्रॉप-डाउन में एक को चुनने के बजाय मानों की जांच करने देगा।
दो की शक्तियां: 1 = 2^0 मत भूलना! –
"कोई नहीं" के लिए 0 मान प्रदान करना हमेशा अच्छा होता है। – Nyerguds
आप FlagsAttribute उपयोग कर सकते हैं एक एनम को सजाने के लिए जो आपको एनम को गठबंधन करने देगा:
<FlagsAttribute> _
Public Enumeration SecurityRights
None = 0
Read = 1
Write = 2
Execute = 4
और फिर उन्हें इतना (कक्षा UserPriviltes) की तरह फोन:
Public Sub New (_
options As SecurityRights _
)
New UserPrivileges(SecurityRights.Read OR SecurityRights.Execute)
वे प्रभावी रूप से संयुक्त हो (बिट गणित) इतना है कि इसके बाद के संस्करण उपयोगकर्ता दोनों पढ़ें है और निष्पादित सभी एक फैंसी SecurityRights चर में चारों ओर ले गए।
//Check to see if user has Write rights
If (user.Privileges And SecurityRights.Write = SecurityRigths.Write) Then
//Do something clever...
Else
//Tell user he can't write.
End If
HTH, टायलर:
यदि उपयोगकर्ता एक विशेषाधिकार आप का उपयोग और (अधिक बिटवाइज़ गणित) उन Enum मान के साथ enum मान की जाँच करने के लिए जाँच कर रहे हैं देखने के लिए जाँच करने के लिए
बिटविक्टर 32 का उपयोग क्यों न करें? – Maslow
@abatishchev यह आलेख से मुझे नहीं मिला है। 'झंडे की गणना के शून्य मान का नाम दें' कोई नहीं '...' मान हमेशा मतलब होना चाहिए कि सभी झंडे साफ़ कर दिए गए हैं '। यह क्या कहता है कि आपको कुछ अतिरिक्त राज्य का मतलब शून्य का उपयोग नहीं करना चाहिए, बल्कि शून्य का मतलब कोई राज्य नहीं है (यानी 'कोई नहीं')। –
-1। आपने
- 1. सी #: एनम्स
- 2. सभी एनम्स
- 3. एनएसएआरएआरई में स्टोर एनम्स?
- 4. जावा एनम्स का विस्तार
- 5. जावा एनम्स enum
- 6. डब्ल्यूसीएफ वर्जनिंग एनम्स
- 7. जावा एनम्स का प्रदर्शन?
- 8. एनम्स और एनोटेशन
- 9. सी # एनम्स में स्थान
- 10. एनम्स, ओवरलैपिंग मान, सी #
- 11. सी #: इंटरफेस में एनम्स
- 12. संयोजन
- 13. लिंक टू एसक्यूएल ऑर्डरबी, एनम्स
- 14. अमेज़ॅन डायनेमो डीबी मैपिंग एनम्स
- 15. डाटाबेस एनम्स - पेशेवर और विपक्ष
- 16. रैखिक संयोजन
- 17. जेनरेटिंग संयोजन
- 18. स्ट्रिंग संयोजन
- 19. संयोजन एल्गोरिदम
- 20. जावा एनम्स और स्विच स्टेटमेंट्स - डिफ़ॉल्ट केस?
- 21. सी # (एनम्स) में '^' क्या करता है?
- 22. क्या एनम्स में अनियमित मूल्य होना चाहिए।
- 23. जावा: एनम्स बनाम if-then-else
- 24. एएस 3/फ्लैश/फ्लेक्स में एनम्स?
- 25. डब्ल्यूसीएफ डेटा अनुबंध और एनम्स का साझाकरण
- 26. Autohotkey शैली कुंजी संयोजन संयोजन के लिए पायथन, स्वचालन?
- 27. संयोजन स्थिर पुस्तकालयों
- 28. संयोजन 2 छवियाँ ओवरले
- 29. सी ++: बांधों का संयोजन?
- 30. NHibernate/MySQL स्ट्रिंग संयोजन
ग्रेट उत्तर। यदि यह तुरंत स्पष्ट नहीं है, (जैसा कि जोनास फोलेसो अपने उत्तर में बताते हैं) - इसकी कुंजी 2 (1,2,4,8,16, आदि) की शक्ति के लिए एनम मूल्यों का उपयोग कर रही है – Andrew
यदि आप हैं .NET 4 का उपयोग करके, आप कोड को पढ़ने के लिए थोड़ा आसान बनाने के लिए हैसफ्लैग विधि का उपयोग कर सकते हैं - यदि सेटिंग्स। हैसफ्लैग (संयोजन एनीम्स। टिटलेबार) फिर ब्ला ब्ला –