几个月前有人问过我这个问题,我无法详细解释。 C# 中的引用类型和值类型有什么区别?
我知道值类型是int
、bool
、float
等,引用类型是delegate
, interface
等。还是这也是错误的?
你能用专业的方式给我解释一下吗?
最佳答案
您的示例有点奇怪,因为虽然 int
、bool
和 float
是特定类型,但接口(interface)和委托(delegate)是 种类 类型 - 就像 struct
和 enum
是各种值类型一样。
我写了引用类型和值类型的解释in this article .我很乐意对您感到困惑的任何部分进行扩展。
“TL;DR”版本是考虑特定类型的变量/表达式的值是什么。对于值类型,值就是信息本身。对于引用类型,值是一个引用,它可以是 null 或者可以是一种导航到包含信息的对象的方式。
例如,将变量想象成一张纸。它可以在上面写上值“5”或“false”,但它不能有我的房子……它必须有到我家的方向。这些方向相当于一个引用。特别是,两个人可能有不同的纸,上面写着相同的去我家的方向——如果一个人按照这些方向把我的房子涂成红色,那么第二个人也会看到这种变化。如果他们在纸上都有我家的不同图片,那么一个人给他们的纸上色根本不会改变另一个人的纸。
关于c# - c#中的引用类型和值类型有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057267/