0

私は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#に慣れていません。列挙型で何か?

編集:例をより意味のあるものにしました。

4

3 に答える 3

1

本当にこれに列挙型を使用したい場合は、次の方法で実行できます。

enum Color { red, green, blue };

{
    foreach (int colorValue in Enum.GetValues(typeof(Color)))
        thing[colorValue] = otherthing[colorValue] * 2;
}

これにより、他のコードで名前を指定して個々の色を取得することもできます。

var color = thing[Color.red];
于 2012-11-21T16:40:59.673 に答える
0

赤、緑、青がカラータイプであると仮定します

色のリストを設定できます

List<Color> colors = new List<Color>();

それにアイテムを追加します:

colors.Add(green);
colors.Add(blue);
colors.Add(red);

次に、繰り返します。

foreach (Color color in colors)
{
    color.thing = color.otherThing * 2
}
于 2012-11-21T16:38:06.677 に答える
0

列挙型はここでは役に立ちません。しかし、整数配列または構造体配列で行われるように独自の型を定義することができます-どちらが良いですか?、およびhttp://msdn.microsoft.com/en-us/library/8edha89s(v=vs.80).aspxで説明されているように算術演算子をオーバーロードして、たとえばintに乗算できるようにします。例えば

thing = otherthing * 2;
于 2012-11-21T16:38:51.950 に答える