[C#]多次元配列

アバター
バグ
記事: 130
登録日時: 14年前
住所: 愛媛県
連絡を取る:

[C#]多次元配列

投稿記事 by バグ » 12年前

多次元配列のインスタンスの作成って、どう書いてます?
例えば、Testという名前のクラスがあるとしますよね。

CODE:

Test[] test = new Test[100];
foreach (var t in test)
{
	t = new Test();
}
んで、こんな感じで書ければ、まだそこそこ美しさを保てる(超主観)のですが、この書き方は許されていません。
なので、仕方なく下記のような書き方に変更する訳です。

CODE:

Test[] test = new Test[100];
foreach (var i in Enumerable.Range(0, test.Length))
{
	test[i] = new Test();
}
これはこれで悪くはないのですが、1次元配列ならまだしも、これが多次元配列だとちょっと悲惨です。

CODE:

Test[,] test = new Test[100, 150];
foreach (var x in Enumerable.Range(0, test.GetLength(0)))
{
	foreach (var y in Enumerable.Range(0, test.GetLength(1)))
	{
		test[x, y] = new Test();
	}
}
個人的に多重ループを乱用するのは極力避けたいなぁ・・・。
そんな訳で小細工です。

CODE:

Test[,] test = new Test[100, 150];
var ex = Enumerable.Range(0, test.GetLength(0));
var ey = Enumerable.Range(0, test.GetLength(1));
var q = from x in ex from y in ey select test[x, y] = new Test();
foreach (var t in q) ;
美し・・・くはないけど、なんとなくスッキリした気はする(笑)
まぁ、こういう方法もありますよっていう程度で。

naohiro19
記事: 256
登録日時: 14年前

RE: [C#]多次元配列

投稿記事 by naohiro19 » 12年前

配列(C# によるプログラミング入門)の方法でもOKなようです。

アバター
バグ
記事: 130
登録日時: 14年前
住所: 愛媛県
連絡を取る:

RE: [C#]多次元配列

投稿記事 by バグ » 12年前

その方法だと要素が多くなると大変じゃないですか?

YuO
記事: 947
登録日時: 14年前

RE: [C#]多次元配列

投稿記事 by YuO » 12年前

T4テンプレートで外に出すのも一つの方法です。
C#使ってC#のコードを生成できます。
添付ファイル

[拡張子 zip は無効化されているため、表示できません]


アバター
バグ
記事: 130
登録日時: 14年前
住所: 愛媛県
連絡を取る:

RE: [C#]多次元配列

投稿記事 by バグ » 12年前

おぉ・・・こんな方法もあるのですね。
知りませんでした、勉強になります(*O*)