あとらすの備忘録

チラ裏のメモ帳

C#基礎 値型と参照型

基礎固め

学生の時は先生が指導してくれていたけど
最近適当にしか書かなくなったから基礎練習です。

本の丸写しにならないように気を付けてます。
てか最初の章の話なのでネットで立ち読みもできますし
技術評論社のサイトにソースもあります。
雑な備忘録です。

値型と参照型

C#の型は値型と参照型に分類される。
詳しい解説はこのサイトにありました。
ufcpp.net

・値型には値がコピーされる
・参照型には参照先アドレスがコピーされる

あれ?参照型ってC言語のポインタだよね?君

とりまソースを書いて値の動きを追ってみる


gist5914036c85162aa1594cccf8086d3acc

Init
     MyClass:mc  X=100 Y=200
     MyStruct:ms X=200 Y=100
Print
     MyClass:mc  X=200 Y=100
     MyStruct:ms X=20   Y=100
Main
     MyClass:mc  X=200 Y=100
     MyStruct:ms X=200 Y=100

メソッドで値を変更しています。ですが、メソッドには戻り値がなく
メインメソッドで値を受け取っているわけではありません

MyClassは参照型なので参照先がPrintメソッドから直接書き換えられ
値型のMyStruct構造体はメソッドに値がコピーされているので
メソッド内だけの値の動きになっています。

雑感

なんとなくの理解と人に説明できる理解は違いますね。
ささっとこの本終わらせてしまいたい