有没有一种方法可以将类的实际实例作为参数传递?

时间:2019-05-15 00:39:49

标签: c# parameter-passing

更具体地说,通常,当您将类的实例作为函数的参数传递时,它将被存储为局部变量,然后在以后保留作用域,或作为其他变量返回。有没有一种方法可以将类的 instance 传递给函数,然后以修改作为参数传递的实例会修改原始版本本身的方式存储它?

static void Main()
{
    int j = 0;
    Example(j);
    Console.WriteLine(j);
}

static void Example(linked int param)
{
    param += 100;
}

当然输出为100。

顺便说一下,这是一个示例用法:

您有位置类,必须将其绘制在地图上。它的构造函数要求坐标和要在其上绘制的地图。从那时起,从该特定位置调用的所有功能仅会影响该Map。您可以在同一张地图上有多个位置,也可以有多个地图。

2 个答案:

答案 0 :(得分:2)

在这种情况下,您没有传递类(reference types),而是传递value types,如果要修改值,请使用ref keyword

static void Example(ref int value)
{
    value += 100;
}

用法

Example(ref j);

答案 1 :(得分:0)

当然,这应该很容易。默认情况下,引用类型(例如类)是对对象的引用,因此,如果您有一个参数类型为引用类型的参数,则在调用代码中会发现该对象在函数中的状态发生了变化

相反,如果您想突变值类型(例如您的int),则只需在类型前加上ref

static void Example(ref int param)
{
    param += 100;
}

现在int将被引用传递 ,该方法将具有对同一个int变量的 reference ,并且您对int的值也会被调用代码观察到,