alunote’s blog

C#,SQL,JavaScriptなどの技術メモをゆっくり投稿しています。

【C#】値型と参照型の違いについて

今回は値型と参照型の違いについて記述します。
※内容が間違っていたらご指摘等コメントにてよろしくお願いします。

◆値型とは
データに直接アクセス(操作)する。

int a;
a = 1;

メモリのどこかに"a"という領域を確保して、確保した領域に"1"を格納する。
このように、変数自体が値を持っているものを値型(value type)といいます。
また、値を渡すときはデータ本体をコピーする方式のデータ型です。

◆参照型とは
データを間接的にアクセス(操作)する。

str = "abc";

例えば、string型は変数に直接データが保管されていません。
"abc"という文字列がメモリ内のどこかに作成されて、メモリへのアドレスを示してくれます。
また、値を渡すときはデータの実態がある場所を保存しておき、
データの本体をコピーせずデータの場所だけを伝える方式です。

◆値型と参照型の違い
値型と参照型については、処理効率が大きく異なります。
データ量が大きい場合には、コピーするよりも保存場所を指定する参照型の方が処理が早く。
逆に、データ量が少ない場合には、保存先を指定するよりもコピーした方が早い場合があります。

以上です。
この記事が誰かの役に立つことを祈ります。