c# - 在C#中使用枚举

标签 c# enums

我有一个Windows应用程序,该应用程序通过命令行参数接受字符串。

该字符串将是以下之一:19、20、21、23、25。这是一个ID,用于动态构建URL。

我之前在很多应用程序中都使用过枚举,但是实际上我从来没有从头开始构建过一个枚举,所以(我觉得这很愚蠢),我并不完全理解它们。

根据传入的字符串,我想设置一个UI标签。我要显示的对应值如下(回想#值是传入的字符串):

19 = Facebook
20 = Twitter
21 = YouTube
23 = Flickr
25 = Blogs


因此,如果传入23,我的标签将显示为“ Flickr”。我可以用枚举来做这件事吗?

public Form1(string collectorID)
{
    InitializeComponent();
    this.CollectorID = collectorID;
    labelCollector.Text = // Set label here
    WebConnection.Create(CollectorID);
}


谢谢!

史考特

最佳答案

enum Sites
{
    Facebook = 19,
    Twitter = 20,
    YouTube = 21,
    Flickr = 23,
    Blogs = 25,
}

//

int i = 19;

if (!Enum.IsDefined(typeof(Sites), i))
{
    throw new Exception();
}

string str = ((Sites)i).ToString();


请注意,许多程序员(包括我在内)都考虑使用枚举的ToString()有点“愚蠢”(这是因为您使所有内容“除非修改程序就不可变”和“不可本地化”)

我要补充一点,您可以使用Dictionary(更好的是,可以动态加载Dictionary):

Dictionary<int, string> sites = new Dictionary<int, string>() 
{
    { 19, "Facebook" },
    { 20, "Twitter" },
    { 21, "YouTube" },
    { 23, "Flickr" }, 
    { 25, "Blogs" },
};

//

string str2;

if (!sites.TryGetValue(i, out str2))
{
    throw new Exception();
}

// str2 contains your site description

关于c# - 在C#中使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7295029/

相关文章:

C# - 如何使方法仅对继承方法基类的类可见

c# - ToCharArray 等效于 List<string>

c# - 隐式内部接口(interface)实现

c++ - 在 C++ 中用字符串切换大小写

ios - 具有原始值的枚举,可编码

java - 尝试用Java中的枚举替换switch语句

c# - 在 XNA 的内容管道 (2Qs) 方面需要帮助

java - 枚举和单例

java - Java中的枚举类型: values() in for each loop

c# - 为什么 List<> 实现 IList