用许多if()else if()简化字符串赋值

时间:2015-02-07 16:24:02

标签: c# enums

有没有办法使用枚举(?)缩短此代码 - 基于Inputcolor? 例如,如果我的inputcolorDarkblue,我希望将Administrator作为字符串。我该怎么做?

我不想要所有这些"否则如果"。

if (inputcolor[0].CompareTo("darkblue") == 0) 
{ 
    dataGridView2.Rows.Add(loggedname1[0], "Administrator", mu + loggedprofile1[0]); 
}
else if (inputcolor[0].CompareTo("green") == 0) 
{   
    dataGridView2.Rows.Add(loggedname1[0], "B", mu + loggedprofile1[0]); 
}
else if (inputcolor[0].CompareTo("ff0000") == 0) 
{   
    dataGridView2.Rows.Add(loggedname1[0], "C", mu + loggedprofile1[0]); 
}
else if (inputcolor[0].CompareTo("3399ff") == 0) 
{ 
    dataGridView2.Rows.Add(loggedname1[0], "D", mu + loggedprofile1[0]); 
}
else if (inputcolor[0].CompareTo("008000") == 0) 
{ 
    dataGridView2.Rows.Add(loggedname1[0], "E", mu + loggedprofile1[0]); 
}
else if (inputcolor[0].CompareTo("00cc00") == 0) 
{ 
    dataGridView2.Rows.Add(loggedname1[0], "F", mu + loggedprofile1[0]); 
}
else if (inputcolor[0].CompareTo("00CC99") == 0) 
{ 
    dataGridView2.Rows.Add(loggedname1[0], "G", mu + loggedprofile1[0]); 
}

1 个答案:

答案 0 :(得分:6)

为简化赋值,在两个字符串之间创建映射很有用。字典在那里证明是有用的:

var colorMapping = new Dictionary<string, string>
{
    { "darkblue", "Administrator"},
    { "green", "B"},
    // ...
};

var key = inputcolor[0];
string output;
if (colorMapping.TryGetValue(key, out output))
{
    dataGridView2.Rows.Add(loggedname1[0], output, mu + loggedprofile1[0]);
}
相关问题