0

我已经定义了一个函数,其中一个参数出现了。在这里,当进行函数调用时,我传递了一个已初始化或未初始化的参数。现在,在初始化参数的情况下,如何使被调用者不更改 out 参数的值?

我不能在这里使用 ref,因为有时我确实发送了一个未初始化的参数。前任:

void fun1()
{

    int x = 3;
    fun2 (out x);
    int y;
    fun2(out y);

}

void fun2(out int x)
{

    ...

}

在这里,一旦控制权转到 fun2,我不希望 x 失去值 3。

4

2 回答 2

3

C# - MSDN

尽管作为输出参数传递的变量在传递之前不必进行初始化,但被调用的方法需要在方法返回之前赋值

由于必须使用 为参数分配值out,因此无法将值保存在函数中。如果在调用函数之前复制变量会更好。像:

int x = 1;
int backupX = x;
fun2(out x);
于 2013-10-03T21:10:26.050 回答
0

也许我都错了,但这听起来你只是想定义一个这样的方法

void caller(){
int x=5;
int y = doSomething(x);
}

int doSomething(int x){
 return x+1;
}

或者如果你想要一个空状态使用:

void caller(){
int? x=5;
int y = doSomething(x);
}

int doSomething(int? x){
 if (x == null)
    return x;
 return x+1;
}
于 2013-10-03T21:23:43.880 回答