値型と参照型の違いは? - TejimaTuyoshi/returnread GitHub Wiki

「 using System;

public class Hello { public static void Main() { // 以下のプログラムにより、 int i1 = 1; int i2; i2 = i1; // i2 に i1 を代入する i1 = 2; // 元となった i1 を更新する Console.WriteLine("i1: " + i1); // i1 は更新したので "2" となる Console.WriteLine("i2: " + i2); // i2 は i1 を代入した時点での値 "1" となる } } 」 これは「参照型」であり、もとのクラスに「代入(先が他のクラス)」となるのである。

この動きをするのは、 ・クラス ・配列 であるため、だが これは「C言語」との対比をするために必要。

(a1の配列あるいはクラスをa2が「参照」する{クラス}(多数の情報)か、a1の数値をa2が「代入」する※intなどの物も含むいわゆる{構造体}(単体の情報)か)

※ポインタ自身は「メモリ管理」に必要

おまけ1 大きい「かも」のString型は「クラス」となる。

構造体 = 少ない  大きい量をメモリに入れないため。(値型) クラス = 多い   わざわざ作り直すより、「new」で作った方が良い。(参照型)

構造体型 と 参照型 のデータ先は異なる。

構造体型 = スレッドスタック(1MB) 参照型 = ヒープ領域(無限にすることが可能なほど大きい)

※スレッドスタック = プロセスの中にあるスレッドの最大領域 先入先出法時にでてくる「入れ物」があるが、実際は「それ」である。