如何在c#中更改全局声明的变量的值

时间:2017-12-19 05:49:18

标签: c#

    public  int a;

    public void currentvalue(int a)
    {
        if (a == 5)
        {
            a = 10;
            Console.WriteLine("a" + a);
        }
    }

如何将a的值更改为10

2 个答案:

答案 0 :(得分:2)

如果在同一范围内同时具有同名的全局变量(字段)和局部变量(参数/本地),编译器将自动选择本地声明的变量。

在处理非静态(实例引用)字段时,您仍然可以使用this关键字访问该字段。例如:

public class MyClass
{
    public int number = 2;

    public void Calc(int number) //when number: 4
    {
        int result1 = number * 3;       //result1: 12
        int result2 =  this.number * 3; //result2: 6
    }
}

如果全局声明的变量是静态的,则不能使用this(仅在实例引用上可用)。在这种情况下,请使用类型引用:

public class MyClass
{
    public static int number = 2;

    public void Calc(int number) //when number: 4
    {
        int result1 = number * 3;         //result1: 12
        int result2 = MyClass.number * 3; //result2: 6
    }
}

您可能需要阅读this关键字here

答案 1 :(得分:2)

您可以使用ref关键字并将引用传递给函数:

class X {
public:
    X() = default;
    X(const X&) = default;
    X(X&&) = delete;
};

X foo() {
    X result;
    return result;
}

int main() {
    foo();
}