“这个”作为参数是参考的吗?

本文关键字:参考 参数 这个 | 更新日期: 2023-09-27 18:37:02

我正在Xna中开发一个关卡编辑器,我的问题是,当您调用使用"this"作为参数的方法时,参数是引用还是值?

前任:

class A_Class
{
    private B_Class bClass;
    public void aMethod()
    {
        bClass.bMethod(this);
    }
}
class B_Class
{
    public void bMethod(A_Class aClass)
    {
        // code
    }
}

“这个”作为参数是参考的吗?

它是

对调用A_Class对象的引用,因为类是引用类型的。
更具体地说,如其他关于引用/值的问题所述,它传递一个值,该值是对调用A_Class对象的引用。

如果不是A_Class,而是A_Struct,this将按值传递,因为结构是值类型。

传递"this"或任何与此相关的对象,将传递一个等于引用的值。

默认情况下,参数由 VALUE 传递。如果参数是引用类型,则 VALUE 是对实际数据的引用。如果参数是值类型,则 VALUE 是值类型保存的数据。在您的代码中,A_Class 是一种引用类型,因此将this作为 param 传递实际上传递了A_Class对象的 VALUE,它是对实际数据的引用。

您可以使用ref关键字使它们通过引用传递

有关详细信息,请参阅 C# 中的参数传递。