C ++
typedef struct someStruct {
int val1, val2;
double val3;
} someStruct;
someStruct a [1000] = { {0, 0, 0.0}, {1, 1, 1.0}, ... };
私が知っているC#でそのようなテーブルを初期化する唯一の方法は、次のようなものを書くことです。
class SomeStruct
{
int val1, val2;
double val3;
public SomeStruct (int val1, int val2, double val3)
{
this.val1 = val1;
this.val2 = val2;
this.val3 = val3;
}
}
SomeStruct[] a = new SomeStruct [1000]
{
new SomeStruct (0, 0, 0.0),
new SomeStruct (1, 1, 1.0),
...
};
それらへのポインタの代わりに、型クラスSomeClassの値の配列(への参照)を持つ方法はありますか?
編集:
重要なのは、配列内の構造体ごとにnewを呼び出さなくてもよいということです。したがって、必要なのは、(1000)構造体への1000ポインターではなく、1000構造体を含む配列です。私が尋ねている理由は、C#がこれを処理する方法は、私にはめちゃくちゃ非効率に見え、多くのメモリとメモリ管理のオーバーヘッド(C ++など)を伴うためです。
私は次のようなことを試みました
struct SomeStruct {
int a, b;
double c;
}
SomeStruct[] a = new SomeStruct [1000] { {0,0,0.0}, {1,1,1.0}, ... };
しかし、それは不可能でした。したがって、構造体は値型であることはわかっていますが、これは関数にパラメーターとして渡す場合にのみ当てはまると結論付け、次のように(ここで構造体を使用して)newを使用する必要がありました。
struct SomeStruct {
int a, b;
double c;
SomeStruct (int a, int b, double c) {
this.a = a; this.b = b; this.c = c;
}
}
SomeStruct[] a = new SomeStruct [1000] {
new SomeStruct {0,0,0.0},
new SomeStruct {1,1,1.0},
...
};