2012-03-20 21 views
5

सी # enums पर अंकगणितीय संचालन का क्या समर्थन है? हैरानी की बात है, मैं इसे न तो Google, न ही विकिपीडिया और स्टैक ओवरफ्लो के माध्यम से ढूंढने में असमर्थ था।एनम मूल्यों पर अंकगणितीय परिचालन

क्या मैं दो enum मान किसी भी कास्ट के बिना जोड़ सकता हूं? किसी मान के लिए मनमानी निरंतर जोड़ें या इसे घटाना? या एनम गारंटी देता है कि उस प्रकार का मान हमेशा परिभाषित enum मानों या उनके बिटमास्क में से एक है?

class ... {... 
enum WeekDays : byte { Sun = 1, Mon = 2, Tue = 3, /* and so on*/ Sat = 7 }; 
public static bool IsWeekend (WeekDays _d) { 
/// Can I be sure here that _d has value from 1..7? May it be any of 0..255? 
} 

मुझे थोड़ा सा संचालन पता है, झंडे का प्रतिनिधित्व करने के लिए उन्हें समर्थन देना उचित लगता है।

विकिपीडिया हमें बताता है, मेरे नमूना भी _d - 1 या WeekDays.Tue - WeekDays.Mon, कि सख्ती से आदेश दिया अनुक्रमिक enums के लिए उपयोगी हो सकता है की अनुमति देता है, लेकिन मैं किसी भी मानक संदर्भ नहीं मिल रहा है, तो आप, कृपया, मुझे बात कर सकता है?

+0

क्या आप इसका परीक्षण नहीं कर सकते हैं और देखें कि क्या होता है? – Matt

+1

मेरा बिंदु मानक को जानना है, एक निश्चित संकलक व्यवहार नहीं। सबसे पहले, मैं यह सुनिश्चित करना चाहता हूं कि मेरा कोड मानक सी # (एमएस, मोनो, ) के किसी भी कंपाइलर के लिए सही होगा। दूसरा, मैं अपने सी # परीक्षण के लिए बेहतर तैयार होने के लिए संबंधित मानक आलेख से कुछ उपयोगी पढ़ना चाहता हूं। – gluk47

उत्तर

0

यदि आप अंकगणितीय परिचालनों का उपयोग करना चाहते हैं, तो enums का उपयोग न करें, numbers का उपयोग करें। Enums संख्यात्मक मूल्यों के लिए नामकरण संयोजन है जो उन्हें अधिक मानव पठनीय बनाने के लिए है और उनमें से संयोजन होने की अनुमति देता है। यही कारण है कि आपको इंटरनेट पर इसके बारे में कुछ भी नहीं मिला, क्योंकि यह enums के साथ किया जाना चाहिए। ==, !=, <, >, <=, >=, +, -, ^, &, |, ~, ++, --, sizeof:

+0

मैं मानक संस्थान के अध्याय को स्पष्ट रूप से अनुमति देने या प्रतिबंधित करने के मानक को प्राप्त करना चाहता हूं, बस यह सुनिश्चित करने के लिए और मेरे संस्थान शिक्षक के लिए एक संदर्भ है। मुझे यह भी पता चला है कि ' + 'की अनुमति है और साथ ही' - ', इसलिए मुझे दिलचस्पी है कि सी # देव के बिंदु से और क्या समझ में आता है, एनम मूल्यों का उपयोग करते समय मुझे क्या धारणाएं करनी चाहिए मेरा कोड मैं व्यक्तिगत रूप से बिटम गणित की अनुमति देने की संभावना रखने वाले एनम मूल्यों पर किसी भी संचालन को प्रतिबंधित करता हूं, मैं आपके साथ सहमत हूं) – gluk47

+0

@ gluk47: ध्यान रखें कि enums केवल पूर्णांक हैं, इसलिए वे संभावित अंकगणितीय परिचालनों के सभी सेट का समर्थन करते हैं। बात यह है कि, जैसा कि मैंने कहा था, यह सिर्फ enum प्रकारों पर उनका उपयोग करने का मामला नहीं है, यानी। लेकिन वे ** ** ** प्रहारित नहीं हैं। – Tigran

+0

वास्तव में वे निषिद्ध हैं। यदि मैं दो enum मानों को जोड़ने या गुणा करने का प्रयास करता हूं तो कम से कम VS2008 एक त्रुटि उठाता है। ऑपरेशन को दोनों ऑपरेटरों को अंतर्निहित प्रकार में कास्टिंग के साथ आगे बढ़ाया जा सकता है, लेकिन मेरा सवाल ऑपरेटर के बारे में था जो सीधे एनम मानों पर लागू होते थे। – gluk47

5

निम्नलिखित ऑपरेटरों enum प्रकार के मूल्यों पर इस्तेमाल किया जा सकता।

+0

धन्यवाद। आपको यह कैसे मिला? कोई संदर्भ, मैनपेज? क्या '+' का मतलब है ' + '? – gluk47

+0

क्या बाइनरी माइनस के लिए खड़ा है? इसी तरह, ' + 'की अनुमति है? – gluk47

+0

@ gluk47, enum में प्रत्येक तत्व का अंतर्निहित प्रकार 'char' को छोड़कर अभिन्न संख्यात्मक प्रकार है। इसलिए enums के समान ऑपरेशन हैं, उदाहरण के लिए, 'int' डेटा प्रकार। –

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