我正在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
}
}
答案 0 :(得分:6)
它是对调用A_Class对象的引用,因为类是引用类型 更具体地说,正如其他关于引用/值的问题所述,它传递的是一个值,该值是对调用A_Class对象的引用。
如果不是A_Class,那么它是A_Struct,this
将按值传递,因为Structs是值类型。
答案 1 :(得分:2)
传递'this'或任何对象,将传递一个等于参考值的值。
答案 2 :(得分:-1)
默认情况下,参数通过VALUE 传递。如果参数是引用类型,则VALUE是对实际数据的引用。如果param是值类型,则VALUE是值类型包含的数据。在您的代码中,A_Class
是一种引用类型,因此将this
作为参数传递实际上会传递A_Class
对象的VALUE,它是对实际数据的引用。
您可以使用ref
个关键字将其通过引用传递。
有关详细信息,请参阅Parameter passing in C#。