2010-12-31 11 views
45

हाय मैं बहुत की तरह एक स्थिर enum declar करने के लिए कोशिश कर रहा हूँ:मुसीबतों स्थिर enum की घोषणा, सी #

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace Lds.CM.MyApp.Controllers 
{ 
    public class MenuBarsController : Controller 
    { 
     // Menu Bar enums 
     public static enum ProfileMenuBarTab { MainProfile, Edit, photoGallery } 

     public ActionResult cpTopMenuBar(string tabSelected) 
     { 
      ...    

" लेकिन मैं निम्नलिखित त्रुटि हो रही है:" संशोधक 'स्थिर' के लिए मान्य नहीं है ।। इस आइटम " मैं जानता हूँ कि यह कुछ आसान है, लेकिन मैं इस समस्या को देखने के लिए नहीं कर पा रहे बहुत धन्यवाद

+0

के लिए बस एक ही [प्रतिनिधियों] (http://stackoverflow.com/questions/6835766/why: उदाहरण के लिए, संकलक रंग गणन निम्न के समान पहले के रूप में यदि आप लिखा था कोड से पता चला व्यवहार करता है -कैन-ए-नेट-प्रतिनिधि-न घोषित-स्थैतिक-स्थिर) और [structs] (http://stackoverflow.com/questions/2613376/why-cant-you-declare-a-static-struct-in- सी-लेकिन-वे-कर-स्थिर-विधियां) – nawfal

उत्तर

98

Enums प्रकार हैं, चर नहीं। इसलिए वे प्रति परिभाषा 'स्थैतिक' हैं, आपको कीवर्ड की आवश्यकता नहीं है।

public enum ProfileMenuBarTab { MainProfile, Edit, PhotoGallery } 
+0

enums परिभाषा द्वारा 'स्थैतिक' हैं लेकिन हम कर सकते हैं स्थिर वर्ग के अंदर इसका उपयोग क्यों नहीं करते? – user2323308

+0

@ user2323308 ** 10.1.1.3 स्टेटिक कक्षाएं ** एक स्थैतिक वर्ग को तत्काल नहीं किया जा सकता है, इसे एक प्रकार के रूप में उपयोग नहीं किया जा सकता है और इसमें केवल स्थिर सदस्य हो सकते हैं ... एक स्थिर वर्ग में केवल स्थिर सदस्य हो सकते हैं (** §10.3। 7 **)। * ध्यान दें कि स्थिरांक और नेस्टेड प्रकार स्थिर सदस्यों * के रूप में वर्गीकृत होते हैं। ** 10.3.7 स्टेटिक और इंस्टेंस सदस्य ** कक्षा के सदस्य या तो स्थिर सदस्य या उदाहरण सदस्य हैं ... * ... निरंतर या प्रकार की घोषणा स्पष्ट रूप से स्थिर सदस्य घोषित करती है। * Ref: https: // docs .microsoft.com/en-us/डॉटनैट/कोई तिथि नहीं/भाषा-संदर्भ/भाषा-विनिर्देश – samosaris

12

बाहर static लो
Enums प्रकार, सदस्य नहीं हैं;। वहाँ एक स्थिर या गैर की धारणा नहीं है -स्टैटिक एनम

आप अपने प्रकार के स्थिर फ़ील्ड बनाने की कोशिश कर रहे हैं, लेकिन इसका प्रकार घोषणा के साथ कुछ लेना देना नहीं है।
(आप शायद एक स्थिर क्षेत्र बनाने नहीं किया जाना चाहिए हालांकि)

इसके अलावा

, you should not make public nested types

+0

धन्यवाद, यह एक लंबी रात रही है। मैंने "स्थैतिक" हटा दिया और सब ठीक है। इसके अलावा मैं आपका लिंक पढ़ रहा था और ऐसा प्रतीत होता है कि एक नेस्टेड एनम आपके नियम का अपवाद है। "नेस्टेड एन्युमेटर और संरक्षित प्रकार इस नियम से मुक्त हैं।" – RayLoveless

+0

@SLaks, क्या यह नियम अपवाद आपको समझ में आता है? – RayLoveless

+0

@ रे: एक गणक ('आईनेमेरेटर ' कार्यान्वयन) के पास एनम के साथ कुछ लेना देना नहीं है। – SLaks

1

आप एक enum declartion static, यानी ProfileMenuBarTab प्रकार का एक क्षेत्र बनाने की कोशिश कर रहे हैं। कक्षा में कक्षा (या जो कुछ भी) घोषित करने के लिए, स्थिर बाहर छोड़ दें।

1

एक enum एक प्रकार है, मूल्य नहीं। संशोधक static वहां बहुत अधिक समझ में नहीं आता है।

+2

एक वर्ग एक प्रकार भी है और स्थिर हो सकता है। और चूंकि आप इस वर्ग के उदाहरण के साथ इस enum तक नहीं पहुंच सकते हैं, यह निश्चित रूप से स्थैतिक है और इसलिए स्थिर संशोधक का उपयोग करना चाहिए, बाकी सब कुछ असंगत है, लेकिन फिर यह सी # .. – MushyPeas

5

आप static.When के रूप में यह परिभाषित करने के लिए एक enumerated प्रकार संकलित किया गया है की जरूरत नहीं है, सी # संकलक प्रकार की एक निरंतर क्षेत्र में प्रत्येक प्रतीक बदल जाता है।

internal struct Color : System.Enum { 
      // Below are public constants defining Color's symbols and values 
      public const Color White = (Color) 0; 
      public const Color Red = (Color) 1; 
      public const Color Green = (Color) 2; 
      public const Color Blue = (Color) 3; 
      public const Color Orange = (Color) 4; 
      // Below is a public instance field containing a Color variable's value 
      // You cannot write code that references this instance field directly 
      public Int32 value__; 
} 
संबंधित मुद्दे