关键字 'this' return 是引用还是值

Does the keyword 'this' return a reference or a value

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

例如,下面的代码会打印数字 23(意思是 this return 复制了 foo),还是数字 96(意思是 this return引用了 foo)?

class Program
{
    static void Main()
    {
        Foo foo = new Foo { 23 };
        foo.Bar();
        Console.Write(foo.FooBar);
    }
}

class Foo
{
    public int FooBar { get; set; }

    public void Bar()
    {
        Foo newFoo = this;
        newFoo.FooBar = 96;
    }
}

由于 this 涉及引用类型 (class),因此它 returns 是对实例的引用。在以下代码片段中使用 this 与使用 foo2 没有什么不同:

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

foo2一样只引用(!)foo1引用的对象,在class里面,this只引用实例。

如果不同,则不可能从方法内部为对象的 属性 赋值,因为使用 this 总是会导致复制对象,这反过来意味着您永远不会设置原始实例字段的值,这会比较差

所以,长话短说:this 持有一个引用,而不是值。

HTH