‫お帰りなさい｡
‫このビデオでは､ 値型と参照型の違いについて見ていきます｡
‫そこで､ データ型は､ メモリ上の位置をどのように占有するかによって､ 2つに分類される｡
‫そして､ それらの種類を詳しく見ていきます｡
‫そこでまず､ バリュータイプに注目する｡
‫つまり､ その名が示すように､ 宣言して値を代入すると､ その値を自分のメモリ空間に直接保持するデータ型である｡
‫わかりました｡
‫つまり､ 値型はヒープを使用して値を保存します｡ 値型の例としては､ int float long double char bool decimal
‫double などのデータ型があります｡
‫では､ 基本的に単純なデータ型はどうなっているのか､ 値型を絵で表現してみましょう｡
‫そこで､ Zという新しい変数を作り､ その値が234であるとします｡
‫つまり､ この値234は､ このZ変数の位置にRAMに格納されることになります｡
‫わかりました｡
‫そして､ 参照型をさらに詳しく見ていくと､ 値を直接メモリに格納するのではなく､
‫実際のデータのメモリ上の位置だけを格納する変数型であることがわかる｡
‫ここでの変数は､ データのメモリ参照を格納するもので､ データを直接格納するものではありません｡
‫ここが大きな違いです｡
‫そうだろ？
‫つまり参照データ型は文字列クラスの配列で､ 基本的にはより複雑で多くのスペースを必要とする､ いわばデータ型なのです｡
‫これは､ リソースを節約し､ プログラムをできるだけ速くするために行われます｡ なぜなら､ そうすれば､
‫値を取得し､ 値を常に移動させる必要がなくなるからです｡
‫でも､ 「この値はあの場所にあるから､ そこから取り出せばいいんだ」と言えば､ 例えば使うときにそのデータをコピーする代わりに､
‫「この値はあの場所にあるから､ そこから取り出せばいいんだ」と言うことができます｡
‫わかりました｡
‫ですから､ この参照型のデータ型をコピーしても､ データのメモリアドレスがコピーされるだけなのです｡
‫そのため､ 同じデータを指す変数が2つ存在することになります｡
‫では､ ここでピクトグラムの表現を見てみましょう｡
‫つまり､ 最初のDennisという文字列があり､ 次に変数値のアドレス､ そして実際の値があります｡
‫ということがここでわかりますね｡
‫この値は､ ここに見えるアドレスだけですが､ 変数名のアドレスはこっちです｡
‫つまり､ 変数値のアドレスと実際の値は､ RAMの2つの異なる場所に保存されているのです｡
‫だから全体的に可変値アドレスは超短いんです｡
‫本当にごく基本的な数字ですよね｡
‫しかし一方で､ 実際の値はかなり複雑なものになります｡
‫つまり､ かなり複雑で､ 多くの情報が格納されている物体かもしれません｡
‫だからこそ､ 私たちの番組でも､ Cシャープ全般でも､ この方法を使った方がいいんです｡
‫では､ レンタルに行くからには､ 車を手に入れたいとします｡
‫そうですね｡
‫レンタカーに行き､ カウンターで､ 注文した車を受け取るわけです｡
‫まあ､ カウンターはあなたの車を持ってないが､ あなたの車の位置は知っている｡
‫キーが渡され､ 「この方向に行けば､ ○○列目､ ○○階､ ○○階に車がありますよ」と教えてくれるわけです｡
‫そうすれば､ そこに行けば､ 車を受け取ることができるわけです｡
‫この例では､ 他の複雑な部分が少し欠けていますが､ 車をカウンターの中に格納するのではなく､
‫車のある場所をすべて参照することで､ 簡単に車をピックアップできるようにしているのです｡
‫でも､ これで少しはリファレンス型への理解が深まるかもしれませんね｡
‫わかりました｡
‫ということで､ ひとまず終了です｡
‫コーディに戻ろう｡
‫では､ 次のビデオでお会いしましょう｡