几个月前有人问我这个问题,我无法详细解释。C#中的引用类型和值类型有什么区别?
我知道,价值类型int,bool,float,等和引用类型delegate,interface等等。或者,这是不对的,太?
int
bool
float
delegate
interface
你能以专业的方式向我解释吗?
你的例子是有点古怪,因为虽然int,bool并且float是特定类型,接口和委托是 种 类型的- 就像struct并且enum是种价值类型。
struct
enum
我已经在本文中对引用类型和值类型进行 了 解释。我很乐意扩展您感到困惑的任何内容。
“ TL; DR”版本将考虑特定类型的变量/表达式的值是什么。对于值类型,值是信息本身。对于引用类型,该值是一个引用,该引用可以为null,也可以是导航到包含该信息的对象的方式。
例如,将变量想像成一张纸。它可能上面写有值“ 5”或“ false”,但它不能拥有我的房子……它必须要有 指向 我房子的 指示 。这些方向等同于参考。特别是,两个人可能有不同的纸条,这些纸条上有指向我家的相同指示- 如果一个人按照这些指示将我的房子涂成红色,那么第二个人也会看到这种变化。如果他们俩在纸上都只有我的房子的独立 图片 ,那么一个人给他们的纸上色根本不会改变另一个人的纸。