2010-03-18 24 views
7

सी # में यह कैसे करता है?सी # में enums - असाइनमेंट

मान लें कि MyClass है दो:

private enum Days{}; 


1) कैसे एक डेटा enum करने के लिए MyClass अंदर निर्माता की मदद से जोड़ता है? जैसा कि:

myclass my = new myclass(Monday,Friday); 

ताकि वर्ग के अंदर enum "सोमवार, शुक्रवार" गुण प्राप्त हो।


2) एक भी वर्ग के भीतर एक enume के लिए एक संपत्ति एक बार यह आरंभ नहीं हो जाता कर सकते हैं? उदाहरण के लिए:

my.Days = new enum Days(Tuesday); //where the old settings are replaced. 

संपादित करें: निम्नलिखित

मुझे क्या करना चाहते है:

enum दिन {सोमवार, मंगलवार, बुधवार, गुरुवार, शुक्रवार} की तरह, मुख्य वर्ग में एक enum है ;

मेरे पास माइक्लास (एनम?) के अंदर कुछ भी होगा ताकि मैं कुछ मूल्यों के साथ कुछ मूल्यों के साथ दिन के अंत से myclass आंतरिक (enum?) में कुछ मान निर्दिष्ट कर सकूं लेकिन दिन के सभी मूल्यों में नहीं।

तो यह है कि मैं, एक MyClass जो एक (enum?) "सोमवार, मंगलवार" के साथ शामिल हो सकता है, जबकि कुछ myclass222 (enum?) "शुक्रवार" आदि शामिल

मैं अगर पता नहीं है enum Myclass कक्षाओं के अंदर ऐसा करने का सही तरीका है?

+0

कोड की पहली पंक्ति में, क्या आपका मतलब है कि एक सरणी होना है? "निजी enum दिन [];" –

+0

मेरा मतलब था कि एक खाली enum हो। एक बार कक्षा बनाने के बाद enum दिन भरना चाहिए। – Milan

उत्तर

11

आपका प्रश्न कुछ हद तक अस्पष्ट है, लेकिन आप वास्तव में कैसे एक enum जहां निर्माण करने के लिए पूछ रहे हैं कि, (फ्रेड्रिक Mork के जवाब पर एक नजर है, कि यह क्या मैं के बारे में बात करने के लिए कोशिश कर रहा था) ,

[Flags] 
public enum Days 
{ 
    None = 0, 
    Monday = 1, 
    Tuesday = 2, 
    Wednesday = 4, 
    Thursday = 8, 
    Friday = 16, 
    Saturday = 32, 
    Sunday = 64 
} 

अब अगर आप प्रकार Days के कुछ सदस्य है, तो आप इसे करने के लिए एक संयुक्त मूल्य प्रदान कर सकते हैं: मान जोड़ा जा सकता है, इस सवाल का जवाब Flags विशेषता के साथ इसे सजाने के लिए है

Days someDays = Days.Monday | Days.Wednesday; 

अद्यतन
अनुरोध पर; यहां जांच करने का तरीका एक निश्चित मूल्य सेट कर दिया जाता है कि क्या है:

bool wednesdayIsSet = (someDays & Days.Wednesday) == Days.Wednesday; 

जब enum अन्य वर्ग में परिभाषित किया गया है कि कैसे एक वर्ग में enum के एक सदस्य बनाने के लिए पर प्रश्न के उत्तर में, कि इस प्रकार दिखाई देगा :

public class SomeClass 
{ 
    [Flags] 
    public enum Days 
    { 
     None = 0, 
     Monday = 1, 
     // and so on 
    } 
} 

public class SomeOtherClass 
{ 
    public SomeClass.Days SomeDays { get; set; } 
} 
+0

+1 कोड को यह जानने के लिए कि क्या दिन परिभाषित किया गया है या नहीं भी अच्छा होगा। मेरा मानना ​​है कि यह सभी के लिए स्पष्ट नहीं है। – Coincoin

+0

ऐसा लगता है कि मैं क्या करना चाहता हूं। प्रश्न यह है कि, अगर मेरे "मुख्य वर्ग" में enum दिन परिभाषित किया गया है, तो मैं अपने "myclass class" के अंदर दिनों का सदस्य कैसे बना सकता हूं ताकि मैं myclass.someDays = Days.Monday का उपयोग कर सकूं? – Milan

+0

@Zka: Myclass में enum को सार्वजनिक रूप से घोषित किया जाना चाहिए – citronas

8

1) आप नहीं कर सकते। Enum संकलन समय

पर परिभाषित किया जाना चाहिए ऐसा लगता है कि आप इसके बजाय एक विशेषता कोलेक्शन देख सकते हैं।

2)) my.Days = Days.Tuesday

2

सवाल से नहीं बता सकते हैं, लेकिन हो सकता है आप कुछ इस तरह का इरादा:

  1. दिनों के साथ एक enum परिभाषित

    012,

    सार्वजनिक enum दिन { रविवार, सोमवार, । । । }

  2. अपनी कक्षा

  3. भीतर दिन की एक सूची विशेषता बनाएं जब आप उन्हें
0

मुझे क्या करना चाहते हो रहा है यही कारण है कि जरूरत है अपनी सूची करने के लिए आवश्यक दिन जोड़ें। प्रश्न, enum दिन मेरी "मुख्य वर्ग" में परिभाषित किया गया है यदि ऐसा है तो है कि मैं उपयोग कर सकते हैं myclass.someDays = Days.Monday है, मैं कैसे एक और "MyClass वर्ग" के अंदर दिन की सदस्य हो सकता है?

अच्छी तरह से यह सोचते हैं उर मुख्य वर्ग mainClass है और यू उपयुक्त पहुँच perms प्रदान की है, तो enum यानी की परिभाषा के आधार पर 1. यदि यह स्थिर है तो myclass.someDays = mainClass.Days.Monday; 2. अन्यथा, आपको मुख्य क्लास mainClass mc = new mainClass() के ऑब्जेक्ट के माध्यम से इसे एक्सेस करना होगा; myclass.someDays = mc.Days.Monday;

संबंधित मुद्दे