包含另一个int变量的int变量是否会被视为引用类型?

时间:2017-12-01 01:40:30

标签: c# value-type reference-type

我理解值类型直接包含值(int,bool等),而引用类型(如类)包含对值存储位置的引用。我还没有在其他帖子中找到有关参考和价值类型的具体问题的答案。

int x = 10;
int y = x;

// Would y be considered a reference type?

我问这个是因为虽然“int x”是一个值类型,但“y”不直接保存一个值,它“引用”到“x”(内存中的不同位置)。

2 个答案:

答案 0 :(得分:1)

  

y会被视为参考类型吗?

没有

引用类型与值类型是类型本身的属性,而不是该类型的任何变量。类型int是值类型;因此,int类型的所有变量都是值类型的变量。

在您的特定情况下,y分配x的值后,会获得该值的副本,而不是对其的引用。 xy的值可以彼此独立地分配。如果您随后更改x,则y的值将保持不变:

int x = 10;
int y = x;
x = 5;
Console.WriteLine(y); // Prints 10

相比之下,参考类型的变量" track"对他们引用的对象的更改:

StringBuilder x = new StringBuilder("Hello");
StringBuilder y = x;
x.Append(", world");
Console.WriteLine(y); // Prints "Hello, world"

答案 1 :(得分:1)

  

我问这个是因为" int x"是一种价值类型," y"不直接持有一个值,它引用"到" x" (记忆中的不同位置)。

y未提及x。对于类型,分配(通过=运算符)表示从右侧的变量复制 左侧的变量。

对于参考类型,表示复制参考