javascript
仕様によると、タイプはundefined、null、boolean、string、number、objectです。それらは、実際には単なる(ハッシュ)マップであるオブジェクトを除いて、不変であると考えることができます。そうです、変数を割り当てると、オブジェクトタイプでない限り、「コピー」されます(実際にコピーされているかどうかは関係ありません)。例を見てみましょう:
var x = "hello";
var y = x; //copy or reference, who cares?
x += " world"; //new string object, x references it
alert(y); //alerts hello
C#
C#2.0仕様によると、構造体/値型とクラス/参照型があります。したがって、実用的な観点から、値型の変数は実際にデータを呼び出しスタックに格納し(そして割り当て時にコピーされ)、参照型の変数は単なる参照です(そしてデータはヒープに送られます)。例:
int holds_a_value = 5;
StringBuilder holds_a_reference = new StringBuilder();
C#(ポインター=参照)でポインターを使用できますが、.net / C#の外部で安全でない関数を呼び出す場合、または安全でないコードを使用する場合は、ポインターを固定する必要があります。例えば:
fixed (int* p = something) { /*p is safe to use, memory doesn't move */}