C#で構造体

お仕事でCのプロジェクトの構造体をC#で使いまわす必要があったのでメモ。
いくつかの違い。

  • インスタントするのにコンストラクタが必要、Cのように配列でインスタントはできない
  • 構造体メンバに配列がある場合には、その配列をインスタントすることも必要、単純に配列を置くだけではインスタントはできない

Cの例


struct aho
{
int memberA;
int memberB;
int* memberArray;
}

struct aho hogehoge[] =
{
{1, 2, {3, 4, 5}},
{5, 6, {7, 8, 9, 10}
};

C#の例


public struct aho
{
int memberA;
int memberB;
int[] memberArray;
public aho (int _memberA, int _memberB, int[] _memberArray)
{
memberA = _memberA;
memberB = _memberB;
memberArray = _memberArray;
}
}

aho hogehoge = new aho[]
{
new aho(1, 2, new int[]{3, 4, 5}),
new aho(5, 6, new int[]{7, 8, 9, 10})
};