misc.log

日常茶飯事とお仕事と

構造体とクラス

Cのライブラリを.NETでラップしてプロジェクトの共通部品とする、という作業の中で、構造体の扱いではまってしまった。基本的に値ベースのデータであることを忘れていて、「なんで設定した値が消えるんだよ!」と悩むこと2時間ほど。
クラスの中にプロパティとして用意した構造体の、さらにメンバーに一気に値を代入すると、「クラス.構造体」この参照の時点で構造体のデータコピーが取得されることになる。で、このコピーのメンバーに値を設定しても、クラスが持つ構造体には変更が反映されない。
仕方ないので、一旦構造体のコピーをまるまる取り出し、値を設定、クラスの構造体プロパティに構造体を設定しなおすという形で実装。もうちょっとうまい方法があるのかもしれないけど、もう時間が無いのと眠くて考えられない。