C#のクラスは参照型

C/C++のコードをC#に移植したものをデバッグしている過程で、どうも変な動きをしているなと思って心当たりの箇所を調べていたら…
C/C++で構造体の実体でバッファを確保していた箇所をC#のクラスに置き換えてあり、
初期化処理で構造体の実体にmemcpy()でテーブルのデータをコピーしていた箇所をC#クラスに参照を代入する処理に置き換えていたので、コピーしたデータに対して書き込みを行っているつもりが、クラスの参照先のデータに対して書き換えを行っており、予期しない動作をしていました(結果、多くのオブジェクトがすべて同一のバッファを参照するような状況になっていたので、いずれかのオブジェクトが参照先に書き込みを行った瞬間に全てのオブジェクトが影響を受けて状態が同じように変化するような動作になっていた)。
今はしっかり認識しましたが、C#を初めて数日の時に何となく移植したコードの部分で発生してしまいました。C#にはmemcpy()がないみたいだからC/C++の構造体のコピーと同じ要領で代入に置き換えてしまえって感じの勢いだったと思います。
いやぁ、いかにも素人チックなミスで恥ずかしい限りですが、C#C/C++とは外づらは似ているけど別物と思ってちゃんと仕組みを理解してから取り組まないと痛い目を見ますな…。