質問者
要素数がわからない配列

質問
すべての返信
-
動的配列ということならば
System.Collections.ArrayListクラスをしらべてみてください。
もっとも、C#2.0ならば、System.Collections.Generic.Listクラスにすべきでしょうけど。
参考)@IT > Insider.NET > 特集 > C#&VBジェネリック超入門(前編)
-
> 要素数がわからない場合、定義やインスタンス化をどのように記述すればよいのでしょうか?
そもそも、「戻り値」で返す "べき" ですね。
というか、System.Array 自体を格納用に使う場面なんてあまりないと思いますが。
public static System.Array GetHogeArray() {
string[] hoge = new string[10];
for (int i = 0; i <= hoge.Length - 1; i++) {
hoge[ i ] = i.ToString();
}
return hoge;
}
使用例です。
public static void MosaMosaAA() {
System.Array HogeHoge = GetHogeArray();
}
このように受け取る側は、インスタンス化する必要もなければ、要素数を知る必要はありません。
参照渡しなどをすると、ややこしい話になりますので、戻り値として返す "べき" と述べました。動的だったら、本来は System.Collections.ArrayList などコレクションを使うべきです。
これらから、配列に変換することもできますし。それにしても、System.Array にする理由がわからないですね。
コレクションではなく配列を使うにしても、型は明示化されているべきです。# コレクションについては、既に蒼の洞窟さんからもアドバイスがありましたか...
-
public class Test { public static void Main( string[] args ) { System.Array aaa = null; BBB( out aaa ); for ( int i = 0; i < aaa.Length; i++ ) { System.Console.WriteLine( "aaa[{0}]={1}", i, ( ( int[] )aaa )[ i ] ); } } public static void BBB( out System.Array ccc ) { ccc = new int[ 10 ]; for ( int i = 0; i < ccc.Length; i++ ) { ( ( int[] )ccc )[ i ] = i; } } }
みたいなこと?(キャストうざぃ)