一尘不染

c#中的引用类型和值类型有什么区别?

c#

几个月前有人问我这个问题,我无法详细解释。C#中的引用类型和值类型有什么区别?

我知道,价值类型intboolfloat,等和引用类型delegateinterface等等。或者,这是不对的,太?

你能以专业的方式向我解释吗?


阅读 350

收藏
2020-05-19

共1个答案

一尘不染

你的例子是有点古怪,因为虽然intbool并且float是特定类型,接口和委托是 类型的-
就像struct并且enum是种价值类型。

我已经在本文中对引用类型和值类型进行
解释。我很乐意扩展您感到困惑的任何内容。

“ TL;
DR”版本将考虑特定类型的变量/表达式的值是什么。对于值类型,值是信息本身。对于引用类型,该值是一个引用,该引用可以为null,也可以是导航到包含该信息的对象的方式。

例如,将变量想像成一张纸。它可能上面写有值“ 5”或“ false”,但它不能拥有我的房子……它必须要有 指向 我房子的 指示
。这些方向等同于参考。特别是,两个人可能有不同的纸条,这些纸条上有指向我家的相同指示-
如果一个人按照这些指示将我的房子涂成红色,那么第二个人也会看到这种变化。如果他们俩在纸上都只有我的房子的独立 图片
,那么一个人给他们的纸上色根本不会改变另一个人的纸。

2020-05-19