2009-05-09 25 views
37

Bu koda sahibim;C Statik Sabitler C#

using System; 

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

Visual Studio söylüyor: The constant 'Rapido.Constants.FrameworkName' cannot be marked static

nasıl diğer sınıflardan bu sabit kullanılabilir yapabilir bunun yeni bir örneğini oluşturmak zorunda kalmadan? (örn. doğrudan Rapido.Constants.FrameworkName aracılığıyla erişme)

cevap

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

Bkz. * Bu * aslında doğru Bunu yapmanın yolu. – Hemant

+1

Oldu! ......... –

+0

Maalesef yanlış okuyordum. Ama bunu neden yaptın? Bu sınıf etkili bir şey içermezdi. Ve eğer bu değeri değiştirecekseniz, her şeyi yeniden derlemeniz gerekirdi. Bunun statik bir okuma alanı olması daha iyi olurdu. –

28

Örnekler arasında değişemediği için bir const zaten statiktir.

+0

Doğru ... açıkça ... gibi – Cuga

+0

bunu belirtmek zaman bu yüzden ben o, uygulandığı yolu anlamaya neden derleyici balks anlamıyorum . Neden böyle yapıldığını soruyorum. – Cuga

+11

Konstrüksiyonu ve durağanlığı karıştırmamaya dikkat edin, farklı şeyler ifade ederler. const, bir öğenin değerini ifade eder, statik ise bir öğe deposunun nasıl ayrıldığını gösterir. Http://stackoverflow.com/questions/842609/why-does-c-not-allow-const-and-static-on-the-same-line/842649#842649 –

11

Statik - public const dizesi yeterli olduğunu bildirmeniz gerekmez.

+3

Aslında, onu statik olarak bildirmek bir hatadır çünkü bu, her ikisi de bir sabit için gerekmeyen, bellek ayırma ve çalışma zamanı başlatmasının gerekli olduğunu ima eder. –

-4

şöyle de sabit oluşturabilirsiniz:

public static readonly string kCustomTypeUID = @"CustomTypeUID"; 
İlgili konular