我正在使用C#(WPF)应用程序中的RGB颜色数据,并发现自己有很多剪切和粘贴的代码
totals.red += currentPixel.red;
totals.green += currentPixel.green;
totals.blue += currentPixel.blue;
我想减少这种复制粘贴和复制粘贴错误的漏洞。我可以在这个地方使用大小为3的数组,但是通过数字访问它们会降低可读性。
我想写这样的东西:
for (col = all colours) {
totals[col] += currentPixel[col];
}
我知道如何在C中解决这个问题,但我不熟悉C#。有枚举的东西吗?
编辑:让这个例子更有意义。
答案 0 :(得分:1)
如果您真的想使用枚举,可以这样做:
enum Color { red, green, blue };
{
foreach (int colorValue in Enum.GetValues(typeof(Color)))
thing[colorValue] = otherthing[colorValue] * 2;
}
这也允许您在其他代码中按名称获取单个颜色:
var color = thing[Color.red];
答案 1 :(得分:0)
假设红色,绿色和蓝色是Color
类型您可以设置颜色列表
List<Color> colors = new List<Color>();
向其中添加项目:
colors.Add(green);
colors.Add(blue);
colors.Add(red);
然后itterate:
foreach (Color color in colors)
{
color.thing = color.otherThing * 2
}
答案 2 :(得分:0)
Enums在这里没有帮助。但您可以在Integer array or struct array - which is better?中定义自己的类型,并按http://msdn.microsoft.com/en-us/library/8edha89s(v=vs.80).aspx中所述重载算术运算符,以允许乘以int。 E.g。
thing = otherthing * 2;