2011-11-15 91 views
0

我試圖想出一種方法來保留我的項目中使用的字符串列表。我可以在.net中獲得字符串的枚舉類似功能嗎?

所以可以說我有網站列表:

www.website1.com 
www.website2.com 
www.website3.com 
www.website4.com 

我希望我能得到的東西的工作類似於枚舉如何與整數工作。

當有人需要檢查,他們將有他們可以從中選擇一個列表,將能夠寫出這樣的事情也許

WebsiteNames.Website1 

是否有一個良好(乾淨)的方式來做到這一點的網址是什麼?

+0

如果'someone'='user'那麼就使用一個數組?另外,這些東西不應該硬編碼,一定要使用配置文件或數據庫。 –

+0

我可能會繼續Wouter de Kort的建議:http://msdn.microsoft.com/en-us/library/bb126445.aspx –

回答

3

您可以使用一個靜態類是這樣的:

public static class WebSiteNames 
{ 
    public readonly string Website1 = "www.website1.com"; 
    public readonly string Website2 = "www.website2.com"; 
} 

然後你可以使用它像:

WebSiteNames.Website1 

如果你看看T4你甚至可以自動生成一個像這樣的文件所以如果有人在代碼中改變了某些東西,你不必擔心手動編寫或運行時錯誤。

0

可以使用struct這樣的:

public struct WebSiteNames 
{ 
    public const string Website1 = "www.website1.com"; 
    public const string Website2 = "www.website2.com"; 
    public const string Website3 = "www.website3.com"; 
    public const string Website4 = "www.website4.com"; 
} 

由於structvalue type,它的用法類似於enums

+1

這裏使用struct有什麼好處?靜態類是一個更好的選擇;你不需要這裏的值類型語義,所以使用一個結構只是令人困惑... –

+1

此外,使用一個結構可以防止你使它成爲靜態的,並且你不能使默認的構造函數是私有的。所以有可能創建一個這種類型的實例,根本沒有意義 –

+0

@ThomasLevesque:好吧,同意...... – NaveenBhat

2

類,像這樣應該這樣做:

public static class WebSiteNames 
{ 
    public static readonly string Website1 = "www.website1.com"; 
    public static readonly string Website2 = "www.website2.com"; 
} 

如果一個字段被公開曝光一般最好讓它靜態只讀,而不是常量,因爲字符串的值的任何改變都需要所有的依賴模塊將被重新編譯以獲得更改。

相關問題