- PR -

構造体のメンバーに配列を使う方法は?(C#)

1
投稿者投稿内容
ひろし
会議室デビュー日: 2003/03/18
投稿数: 13
投稿日時: 2003-07-02 11:34
// ***** Sample1 *****
// Sample1は問題なし
public struct test
{
public int a;
public double b;
}
public test[] test1 = new test[500];
test1[0].a = 1;
test1[0].b = 2;

// ***** Sample2 *****
// Sample2はエラーになってしまう
// 構造体のメンバーに配列を使いたい
public struct test
{
public int a;
//
// 単一のbでなくてb[0]〜b[9]を確保したい
// 例えば下記のように書くとエラー
// ***** ここはどのように記述すれば良いのか? *****
//
public double[] b = new double[10];
}
// ***** ここはこの記述のままでOKですか? *****
public test[] test1 = new test[500];
test1[0].a = 1;
test1[0].b[0] = 2;
test1[0].b[1] = 3;
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-07-02 12:59
構造体は、デフォルトコンストラクタを書けません。
また、その場で初期化することもできません。
したがって、メンバの配列を初期化するには、次のようにするしかないと思います。
コード:
public class Class1
{
	public struct test
	{
		public int		a;
		public double[]	b;
		public void Reset(){b = new double[10];}
	}
	public static void Main(string[] args)
	{
		test[] test1 = new test[100];
		test1[0].Reset();
		for (int i=0;i<test1[0].b.Length;++i)
			Console.WriteLine(test1[0].b[i]);
	}
}

ひろし
会議室デビュー日: 2003/03/18
投稿数: 13
投稿日時: 2003-07-02 17:24
うまくいきました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)