繁体   English   中英

引用分配给什么类型,而不是用Javascript复制?

[英]To what types do the references get assigned instead of being copied in Javascript?

我正在使用手机,因此无法自行测试。 另外,我可能会错过一些东西。

我知道,当分配一个数字时,例如a = b,b实际上会复制到a中。 但是,如果b是一个对象,则只能传递一个引用。 其他类型呢? 我应该担心什么吗?

另外,我听说您不能在C#中使用指针,因为JC会移动变量。 Javascript是否相同? 那么如何用这些语言解决这些引用?

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规范,有struct / value类型class / reference类型 因此,从实际的角度来看,值类型的变量实际上将数据存储在调用堆栈中(并在分配时被复制),而引用类型的变量仅是一个引用(数据进入堆)。 例:

int holds_a_value = 5;
StringBuilder holds_a_reference = new StringBuilder();

您可以在C#中使用指针 (pointer = reference),但是如果在.net / C#之外调用不安全的函数或使用不安全的代码,则必须固定它们。 例如:

fixed (int* p = something) { /*p is safe to use, memory doesn't move */}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM