每当在C#类中调用关键字this
时,它会返回对其出现的实例的引用,还是返回实例的值(如副本)?
例如,以下代码将打印数字23(表示this
返回foo
的副本)还是数字96(表示this
返回对{{1 }})?
foo
答案 0 :(得分:3)
由于this
与引用类型(class
)相关,因此它返回对该实例的引用。在以下代码段中,使用this
与使用foo2
没什么不同:
var foo1 = new Foo();
var foo2 = foo1;
与foo2
仅引用(!)类内foo1
引用的对象一样,this
仅引用实例。
如果不一样,例如从方法内部为对象的属性分配值,因为使用this
总是会导致对象被复制,这反过来意味着您将永远不会设置原始实例的字段的值,这很糟糕
因此,简而言之,this
拥有一个引用,而不是价值。
HTH