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

わんくま同盟

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

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

ツリー一括表示

クラスの2次元配列を生成する方法 /ひげそり (18/07/01(Sun) 14:27) #87799
Re[1]: クラスの2次元配列を生成する方法 /魔界の仮面弁士 (18/07/01(Sun) 15:03) #87800
│└ Re[2]: クラスの2次元配列を生成する方法 /ひげそり (18/07/01(Sun) 15:31) #87801
│  └ Re[3]: クラスの2次元配列を生成する方法 /魔界の仮面弁士 (18/07/01(Sun) 20:30) #87808
Re[1]: クラスの2次元配列を生成する方法 /shu (18/07/02(Mon) 08:07) #87810


親記事 / ▼[ 87800 ] ▼[ 87810 ]
■87799 / 親階層)  クラスの2次元配列を生成する方法
□投稿者/ ひげそり (1回)-(2018/07/01(Sun) 14:27:04)

分類:[.NET 全般] 

Data_Arrayというクラスを自分で作ったとして、

Dim sss = Enumerable.Range(0, 6).Select(Function(i) New Data_Array()).ToArray()

とやれば、Data_Arrayを1次元配列を
一行で生成することができます。

一方で、2次元配列の場合には
どのようにすれば良いですか?

Dim sss = Enumerable.Range(0, 6).Select(Function(i) New Data_Array()).ToArray(,)

Dim sss = Enumerable.Range(0, 6).Enumerable.Range(0, 6).Select(Function(i) New Data_Array()).ToArray()

など、試してみましたが
うまくいきませんでした。



[ □ Tree ] 返信 編集キー/

▲[ 87799 ] / ▼[ 87801 ]
■87800 / 1階層)  Re[1]: クラスの2次元配列を生成する方法
□投稿者/ 魔界の仮面弁士 (1729回)-(2018/07/01(Sun) 15:03:31)
2018/07/01(Sun) 15:07:24 編集(投稿者)

No87799 (ひげそり さん) に返信
> 一方で、2次元配列の場合には
> どのようにすれば良いですか?

できないと思います。
二次元配列向けの拡張メソッドは標準では用意されていないので。

多次元配列向けに設計された拡張メソッドを
自作しておられる方も居るようですけれども。
[ 親 87799 / □ Tree ] 返信 編集キー/

▲[ 87800 ] / ▼[ 87808 ]
■87801 / 2階層)  Re[2]: クラスの2次元配列を生成する方法
□投稿者/ ひげそり (2回)-(2018/07/01(Sun) 15:31:22)
自作された多次元配列向けの拡張メソッドが
書かれたページがあれば
お教えくださいませ。
[ 親 87799 / □ Tree ] 返信 編集キー/

▲[ 87801 ] / 返信無し
■87808 / 3階層)  Re[3]: クラスの2次元配列を生成する方法
□投稿者/ 魔界の仮面弁士 (1733回)-(2018/07/01(Sun) 20:30:09)
No87801 (ひげそり さん) に返信
> 自作された多次元配列向けの拡張メソッドが

今回の目的は、「二次元配列を生成する」ことでしたよね。であれば、
戻り値が『As 型(,)』になるメソッドを用意するだけで、簡単に自作できるはずでは…?

実装は拡張メソッドでも静的メソッドでもインスタンスメソッドでも OK ですし、
ジェネリックにするかどうかも任意です。引数の渡し方も自分で決められます。
手順的には、作成したメソッドの中で、ReDim ⇒ループ処理で生成⇒結果を Return
というだけの処理で、そう難しくは無いと思うのですが。


正直なところ、2次元配列は LINQ との相性が悪すぎますし、
ジャグ配列等に切り替えた方が良いとは思うのですが、どうしても 2 次元配列を
使う必要があるのなら、多次元配列向けの LINQ 実装の例について、過去ログの
No81916 から始まるスレッドで述べられているので、参考にしてみてください。
[ 親 87799 / □ Tree ] 返信 編集キー/

▲[ 87799 ] / 返信無し
■87810 / 1階層)  Re[1]: クラスの2次元配列を生成する方法
□投稿者/ shu (1127回)-(2018/07/02(Mon) 08:07:22)
No87799 (ひげそり さん) に返信

2次元配列の使い方によりますが
問題がなければ
(1)内部的に1次元配列で保持して(大きさはxlen * ylen)
(2)アクセスは(x,y)にたいし y*xlen + xのインデックスで内部配列を参照
というクラスを用意してみるのはどうでしょう?

[ 親 87799 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -