2011-11-15 39 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"; 
} 

如果一个字段被公开曝光一般最好让它静态只读,而不是常量,因为字符串的值的任何改变都需要所有的依赖模块将被重新编译以获得更改。

相关问题