关键字“ this”是否返回引用或值

时间:2018-09-09 06:21:55

标签: c# oop this pass-by-reference pass-by-value

每当在C#类中调用关键字this时,它会返回对其出现的实例的引用,还是返回实例的值(如副本)?

例如,以下代码将打印数字23(表示this返回foo的副本)还是数字96(表示this返回对{{1 }})?

foo

1 个答案:

答案 0 :(得分:3)

由于this与引用类型(class)相关,因此它返回对该实例的引用。在以下代码段中,使用this与使用foo2没什么不同:

var foo1 = new Foo();
var foo2 = foo1;

foo2仅引用(!)类内foo1引用的对象一样,this仅引用实例。

如果不一样,例如从方法内部为对象的属性分配值,因为使用this总是会导致对象被复制,这反过来意味着您将永远不会设置原始实例的字段的值,这很糟糕

因此,简而言之,this拥有一个引用,而不是价值。

HTH