1

我正在 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
    }
}
4

3 回答 3

6

它是对调用 A_Class 对象的引用,因为类是引用类型的。
更具体地说,正如在其他关于引用/值的问题中所指出的那样,它正在传递一个值,并且该值是对调用 A_Class 对象的引用。

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

于 2012-06-12T02:08:26.603 回答
2

传递 'this' 或任何对象,将传递一个等于引用的值。

于 2012-06-12T02:07:52.517 回答
-1

默认情况下,参数由 VALUE传递。如果参数是引用类型,则 VALUE 是对真实数据的引用。如果参数是值类型,则 VALUE 是值类型保存的数据。在你的代码中,A_Class是引用类型,所以this作为参数传递实际上是传递对象的VALUE A_Class,它是对真实数据的引用。

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

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

于 2012-06-12T02:17:55.510 回答