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

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


例如,下面的代码会打印数字 23(意味着this返回 的副本foo)还是数字 96(意味着this返回对 的引用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;

    }

}


www说
浏览 240回答 1
1回答

皈依舞

由于this与引用类型 ( class) 相关,因此它返回对实例的引用。使用与以下代码片段中的使用this没有什么不同foo2:var foo1 = new Foo(); var foo2 = foo1;与foo2仅引用 (!) 所引用的对象相同foo1,在类内部,this仅引用实例。如果它不同,就不可能例如从方法内部为对象的属性赋值,因为 usingthis总是会导致复制对象,这反过来意味着您永远不会设置原始实例字段的值,这将是相当糟糕的。所以,长话短说:this持有参考,而不是价值。HTH😊
打开App,查看更多内容
随时随地看视频慕课网APP