C#函数参数使用out提示我必须赋值,我明明有赋值啊

我明明赋值了,开始以为是IF的原因,加了else还是不行
用ref的话,数组又全变成0了,怎破

out参数的作用是执行完方法后,将方法的最终值给out后的变量。
如果你是需要方法执行完之后的basic数组的话,可以使用ref,全部变0,应该是赋值过程中产生的问题。追问

用ref调试的结果是这样的
比如说数据是1 2 3 4 5
i= 0 的时候basic[0]的值是1,正常
i= 1 的时候,basic[1]的值是2,但是basic[0]的值变成0了
以此类推,最后都成0了...

追答

能看下你的调用过程的代码吗?

追问

找到问题了,因为那个数组的new用在循环里了,所以每次执行都给清0了

追答

~~|||

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-01
因为for循环是不一定进入的,IDE检测到这点以后,表示如果for循环未进入,你的basic就未被new过

可以最后写一句
if(base==null)
base=new .....本回答被提问者和网友采纳

C#函数参数使用out提示我必须赋值,我明明有赋值啊
if(base==null)base=new ...

c#中的out关键字使用的优势在哪里?我如果不使用,做普通的赋值操作。有...
C#中的ref和out关键字 1、引用参数(ref)在可以作为引用参数在函数成员调用中传递之前,必须已明确赋值,而输出参数(out)在可以作为输出参数在函数成员调用中传递之前不一定要明确赋值,在该函数成员正常返回前都必须已明确赋值。2、在函数内部,引用参数(ref)被视为初始已赋值,输出参数(out)被视...

懂C# out关键字的童鞋看看吧!
这个是这样的,因为你有很多 IF 分支,就像 return 一样,必须无论从哪个分支结束, out 参数都必须赋值,你这只有一个分支给它赋值了

C# 的out问题
因此,要使用ref形参,需要赋予实参一个哑元值,从而可以满足这一约束。C#中out形参就可以解决此类问题。out形参类似于ref形参,但它只能用来将值从方法中传出。在调用之前,并不需要为out形参的变量赋予初始值。在方法中,out形参总是被认为是未赋值的,但在方法结束前必须赋于形参一个值。因此,当调用...

C#中 out的问题
所以你的 a 是保存不下来的,这不是给 out 找尴尬吗? 明明要人家 out 一个值给你使用,你却用完人家就丢了!这可不行哦!最后计算出来的值时要放到你定义的 out int number中的,这与使用 ref 差不多,不过必须先给你定义的变量赋值,如:int number = 0;而out 不需要。

C# 输出OUT 参数怎么会错??
在函数MaxValue中,没有对out参数maxIndex预先赋值,所以会编译不过,调用的地方没问题

C# 中的out参数调用方法的时候需要传递对应的值吗?
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。例如:class OutExample { static void Method(out int i){ i = 44;} static void Main(){ int value;Method...

c#中局部变量必须得赋值?
对,要使用必须得先赋值,和c\/c++不一样。后面是类的成员变量,和局部变量是不一样的。成员变量在类初始化时就会分配一个默认值。

c#的中参数传递时用于输出参数的关键字是什么
c#的中参数传递时用于输出参数的关键字是 out,如 public void FunA(out int a){ a =1;} out参数必须在方法体内赋值,否则编译错误

C# 委托中 使用 out 参数 该如何接收
out 类型参数,需要在外部定义,调用函数前就应该是已存在的。在函数内只需给它赋值就可以了。待函数调用结束后,就可以访问该变量的值了。

相似回答