.NET構造体は値型です。つまり、関数Aが構造体を作成し、構造体を変更しようとする関数Bを呼び出すと、Bは構造体の新しいコピーを取得するため、Aの構造体には適用されません。.NETの構造体はコピーライト時にコピーされますか?
構造体は、CLRの他の値型よりもはるかに大きくなる可能性があります。ある関数が大きな構造体を作成し、別の関数を呼び出して構造体を関数に渡すとします。これは10レベルになりますが、すべての関数は構造体からデータを読み取るだけで、フィールドを変更する必要はありません。各関数呼び出しで実際に構造体の新しいコピーが作成された場合、上記のシナリオでは多くの不要な構造体が割り当てられます。
C言語のユーザーは、構造体自体の代わりにポインタを渡すことでこれを避けることができます。また、内部関数がstructのデータを変更してはならない場合は、constキーワードを使用できます。
しかし、C#にはポインタの代わりに参照があり、 "const ref"のようなものはありません。
私の質問は:関数がフィールドを内部で変更しようとしたときにのみ構造体をコピーするように.NETが最適化されているか、構造体が別の関数に渡されたときに常に新しいコピーが作成される
も参照してください。http://stackoverflow.com/questions/85553/when-should-i-use-a-struct-instead-of-a-class –