C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: c# ジェネリックの要素に配列を使った場合の値の取得について


(過去ログ 114 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■67474 / inTopicNo.1)  c# ジェネリックの要素に配列を使った場合の値の取得について
  
□投稿者/ ochamu (1回)-(2013/08/05(Mon) 21:21:07)

分類:[C#] 

開発環境 Windows7 使用言語C#

初めて質問させて頂きます。

c#のジェネリックを使って、ビットマップのカラー(RGB)値を
保存するコレクションリストを作成しました。

 List<int[]> bitMapRGB = new List<int[]>();

と宣言し、次のようにして値代入時には、その場でnewで初期化した配列を、addメソッドでリストに追加しています。

 int[] arr1 = new int[] {255,0,0};
 bitMapRGB.Add(arr);

この場合のコレクションリストからの値の取得方法がよく分かりません。

次のようにして、新たに作った配列経由で値は取得出来るのですが、

int[] arr2 = bitMapRGB[0];
MessageBox.Show("赤色の値は、"+arr2[0].Tostring()+"です");


この時、配列を新たに作らなくても、
BitMapRGB[0].arr1[0].Tostring()や、BitMapRGB[0][0].Tostring()

などとして、もっと簡単にコレクションリストの配列にアクセスする方法が
有れば教えてください。宜しくお願いします。

-----------------List-----------------
 List<int[]> BitMapRGB = new List<int[]>();//コレクションリストを作成

 int[] arr1 = new int[] {255,0,0};//RGB値を保持する配列に値を設定。この場合赤色

 BitMapRGB.Add(arr1);//RGB値を保持する配列をリストに追加
 
 int[] arr2 = BitMapRGB[0];//←(ココが無駄) 一旦リストの0番目の配列をarr2に代入

 MessageBox.Show("赤色の値は、"+arr2[0].Tostring()+"です");//値を表示
--------------------------------------



引用返信 編集キー/
■67475 / inTopicNo.2)  Re[1]: c# ジェネリックの要素に配列を使った場合の値の取得について
□投稿者/ Hongliang (77回)-(2013/08/05(Mon) 21:56:57)
タイトルは「ジェネリックの要素」ではなく、「ジェネリックリストの要素」でしょうか。

> 次のようにして、新たに作った配列経由で値は取得出来るのですが、
>
> int[] arr2 = bitMapRGB[0];
> MessageBox.Show("赤色の値は、"+arr2[0].Tostring()+"です");

「新たに作った」というとまるで新しいインスタンスが生成されたかのようです。

bitMapRGB[0]は、int[]を返します。
int[]に対しては、[]によるアクセスが可能です。
ですから、当然
bitMapRGB[0][0]
という記述は可能です。

> int[] arr2 = BitMapRGB[0];//←(ココが無駄) 一旦リストの0番目の配列をarr2に代入

必ずしも無駄とは言えません。
見やすさのために一旦ローカル変数で受け取るというのはよくあることです。
後々やっぱりGの値もほしいと言うときにも、arr2[1]と書けば良いだけなので手軽です。

// List<Color>じゃ駄目なんでしょうか…。
引用返信 編集キー/
■67476 / inTopicNo.3)  Re[2]: c# ジェネリックの要素に配列を使った場合の値の取得について
□投稿者/ ochamu (2回)-(2013/08/05(Mon) 22:50:33)
No67475 (Hongliang さん) に返信
> int[]に対しては、[]によるアクセスが可能です。
> ですから、当然
> bitMapRGB[0][0]
> という記述は可能です。

すみません。今やればできました。

> // List<Color>じゃ駄目なんでしょうか…。

RGB値から計算したグレースケール化のための値
"int[R,G,B,Average]"も保持したいので。。。

有難うございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -