【发布时间】:2013-10-28 13:31:11
【问题描述】:
快速简单的问题:
如何制作具有多种颜色的开关/外壳。
我能做的是:
if(color == Color.Red)
color = Color.Green;
else
{
if(color == Color.Green)
color = Color.Blue;
else
{
// ...
}
}
或者我可以用旧/新颜色做一个Dictionary 来替换它们(在这个特定的例子中,除了分配新颜色之外不需要额外的工作)。
或者我可以使用 tmp 变量,所以它变成(但同样,在这种特定情况下):
Color tmp = Color.Transparent; // or whatever
if(color == Color.Red)
tmp = Color.Green;
if(color == Color.Green)
tmp = Color.Blue;
//...
color = tmp;
我想要的是类似的东西
switch(color)
{
case Color.Red:
// ...
break;
case Color.Green:
// ...
break;
case Color.Blue:
// ...
break;
}
我发现了this 有趣的文章,我可能会决定使用它。
或者我正在考虑类似的事情
switch(color.ToArgb())
{
case 129381038: // Color.Red?? how to put it here nicely?
// ...
}
你们觉得哪个更好?
【问题讨论】:
-
为什么要使用switch语句?就个人而言,我更喜欢字典方法。
-
如果您想要执行的唯一操作是替换,那么字典似乎是最干净的选择。在 if 语句和 switch 之间,我总是更喜欢 if 语句(因为它更具适应性)。但我想这只是个人口味的方法。客观上没有比其他任何选择更好的选择。
-
@gleng,除了设置颜色之外,可能还有一些代码。它还没有,但我喜欢 clean 开关/外壳的外观,这就是原因。
标签: c# colors switch-statement case