首页 > 解决方案 > 类方法中的“this”是指被调用的还是默认的实例?

问题描述

在 VBA 中,如果我要修改它们的属性值,我会不断地将类实例作为参数传递给它们自己的方法。举一个极其简化的 C# 示例:

class WhateverClass
{
    public void DoSomething(WhateverClass whateverClass)
    {
        whateverClass.WhateverProperty = "Hello"
    }
}

this在 C# 中,我可以避免像这样通过 using 将调用的类实例作为参数传递吗?还是会this引用默认的类实例?

class WhateverClass
{
    public void DoSomething()
    {
        this.WhateverProperty = "Hello"
    }
}

标签: c#

解决方案


this指被调用的类实例。

我制作了以下测试应用程序来检查:

class Program
{
    static void Main()
    {
        var class1 = new Class1();
        class1.Setup();

        Console.Write(class1.Property1);
        Console.ReadKey();
    }
}


class Class1
{
    public string Property1 { get; set;}

    public Class1 ()
    {
        this.Property1 = "Overwrite me";
    }


    public void Setup()
    {
        this.Property1 = "Successfully overwritten";
    }
}

这个的输出是“成功覆盖”


推荐阅读