0

私は携帯電話を使用しているので、自分でテストすることはできません。また、私は何かを逃すかもしれません。

番号が割り当てられているとき、たとえばa = bの場合、bは実際にaにコピーされることを知っています。ただし、bがオブジェクトの場合は、参照のみが渡されます。他のタイプはどうですか?気になることはありますか?

また、変数はJCによって移動されるため、C#ではポインターを使用できないと聞きました。Javascriptでも同じですか?では、これらの参照はこれらの言語でどのように解決されますか?

4

1 に答える 1

1

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 */}
于 2012-06-24T09:23:25.153 に答える