引用类型和值类型

  在 C#中,数据根据变量的类型以两种方式中的一种存储在一个变量中。变量的类型为分两种:引用类型和值类型,其区别如下:

  ● 值类型在内存的同一个地方存储它们自己和它们的内容。

  ● 引用类型存储指向内存中其他某个位置(称为堆)的引用,实际内容存储在这个位置。

  实际上,在使用 C#时,不必过多地考虑这个问题。到目前为止,所使用的 string 变量(这是引用类型)与使用其他简单变量(大多数是值类型,类如 int )的方式完全相同。

  值类型和引用类型的一个主要区别是:值类型总是包含一个值,而用用类型可以是 null,表示它们不包含值。但是,可使用可空类型创建一个值类型,使值类型在这个方面的行为方式类似于引用类型(即可以为 null )。第 12 章在介绍范型(包括可空类型)这一高级主题时将讨论这方面的内容。

  只有 stringobject 类型是简单的引用类型。数组也是隐式的引用类型。我们创建的每个类都是引用类型,这就是在这里说明这一点的原因。

  结构类型和类的重要区别是,结构类型是值类型。你可能发现结构类型和类非常类似,特别是第 6 章中,你看到了在结构类型中也可以使用函数。第 9 章还将进一步探讨这个问题。