我已经跨越博客阅读原始类型的不变性。他们说整数是不变的。这是否意味着整型变量在每个新值的赋值中都获得新的内存位置?不可变整数
I.e.
int32 Val= 34;
Val =38;
现在,这两个值将被存储在不同的存储位置或相同?
我已经跨越博客阅读原始类型的不变性。他们说整数是不变的。这是否意味着整型变量在每个新值的赋值中都获得新的内存位置?不可变整数
I.e.
int32 Val= 34;
Val =38;
现在,这两个值将被存储在不同的存储位置或相同?
这是否意味着整型变量的新值的每一项任务得到新的存储位置?
记住整数是“值类型” - 这意味着一个变量,它们存储在存储值而不是一些内存位置的参考。所以,当你这样做:
int32 Val= 34;
Val =38;
新值存储在Val
- 所以只有一个“记忆区”参与,并在该位置的值被覆盖。
现在,这两个值将被存储在不同的存储位置或相同?
那么,在这种意义上的34
“价值”不存储任何地方了。这是否意味着,数34
现在38
任何地方34
使用?绝不是!您所做的只是在Val
中存储不同的值。
假设你有一张废纸上,你已经写了“瓦尔”在顶部(只是为了给它一个名字)。然后你写上“34”。你有多少价值?有多少纸屑?
现在你划掉(或白出)的“34”并写入“38”。 现在你有多少价值?有多少纸屑?
随着引用类型类比可以工作为好,但在纸张上的“值”是一个参考到不同的废料的纸张。如果您更改纸张上的值,则其他废料不会神奇消失。清洁团队(垃圾收集者)的工作是查看躺在附近的所有纸屑,看看是否有其他废纸正在引用它,如果没有引用,则将其扔掉。
你已经在这里问了四个相当单独的问题 - 而2,3和4与不变性无关。它们与'string'是一个引用类型有关,'int'是一个值类型。如果你问一个非常具体的问题,这将有所帮助。 (你的第一个问题可能与你的标题最接近,但是你不清楚你在问什么,如果你能显示一些代码,那么帮助你会容易得多。) –
这些问题在阅读不同的文章后被打乱了。对他们的任何指导将有所帮助..在此先感谢 – OmiH
不,我不会回答这个问题,因为它太广泛。堆栈溢出问题应该*特定*和*个人*。在单个帖子中提出四个广泛的问题并不是一个好主意。 –