2009-05-09 13 views
37

मैं इस कोड है: यह का एक नया उदाहरण बनाए बिना The constant 'Rapido.Constants.FrameworkName' cannot be marked staticस्टेटिक स्थिरांक

मैं कैसे अन्य वर्गों से यह निरंतर उपलब्ध करा सकते हैं:

using System; 

namespace Rapido 
{ 
    class Constants 
    { 
     public static const string FrameworkName = "Rapido Framework"; 
    } 
} 

दृश्य स्टूडियो मुझसे कहता है? (यानी। इसे सीधे Rapido.Constants.FrameworkName के द्वारा)

उत्तर

95
public static class Constants 
{ 
    public const string FrameworkName = "Rapido Framework"; 
} 
+2

मुझे लगता है * यह * वास्तव में सही है ऐसा करने का तरीका – Hemant

+1

यह है! ......... –

+0

खेद है कि मैं गलत यह पढ़ रहा था। लेकिन आप ऐसा क्यों करेंगे? इस वर्ग में प्रभावी रूप से कुछ भी नहीं होगा। और यदि आप कभी भी इस मूल्य को बदलना चाहते हैं तो आपको सबकुछ फिर से जोड़ना होगा। यह एक स्थिर पाठक क्षेत्र होना बेहतर होगा। –

28

एक स्थिरांक पहले से ही स्थिर है यह उदाहरणों के बीच परिवर्तित नहीं कर सकता के रूप में।

+0

सही ... इसलिए मैं क्यों संकलक कतरा रही है समझ में नहीं आता है जब आप स्पष्ट रूप से इस तरह के रूप में यह निरूपित ... – Cuga

+0

मैं समझता हूँ कि जिस तरह से इसे लागू किया है । मैं पूछ रहा हूं कि ऐसा क्यों किया जाता है। – Cuga

+11

स्थिरांक और स्थिर भ्रमित करने के लिए नहीं ख्याल रखना, वे अलग अलग बातें मतलब है। कॉन्स किसी आइटम के मान को संदर्भित करता है जबकि स्थैतिक संदर्भ देता है कि आइटम संग्रहण कैसे आवंटित किया जाता है। Http://stackoverflow.com/questions/842609/why-does-c-not-allow-const-and-static-on-the-same-line/842649#842649 –

11

आपको इसे स्थिर के रूप में घोषित करने की आवश्यकता नहीं है - सार्वजनिक कॉन्स स्ट्रिंग पर्याप्त है।

+3

वास्तव में यह स्थैतिक घोषित करने में एक त्रुटि है क्योंकि इससे यह संकेत मिलेगा कि स्मृति आवंटन और रनटाइम प्रारंभिकरण की आवश्यकता है, न कि निरंतर के लिए जरूरी है। –

-4

आप भी लगातार इस प्रकार बना सकते हैं:

public static readonly string kCustomTypeUID = @"CustomTypeUID"; 
संबंधित मुद्दे