【发布时间】:2019-01-25 04:48:55
【问题描述】:
我有接受out List<int> list 作为参数的函数。如何检查list 是否已初始化?
这段代码给了我Use of unassigned out parameter 'list' 错误:
public void CheckList(out List<int> list)
{
if (list == null) {
list = List<int>();
}
//Rest of the code
}
我检查过的事实:
- 作为输出参数传递的变量不必在传递到方法调用之前进行初始化。但是,被调用的方法是 需要在方法返回之前赋值。 out parameter modifier
编辑: 我希望我的方法能够接受这两个选项:使用 elemtns 列出并向其附加附加元素,或者在其他情况下初始化列表并向其添加元素。
【问题讨论】:
-
所以你的报价中已经有了答案......你可能想改用
ref。 -
我没有。我想把这个决定留给来电者。如果输入未初始化,则此方法将初始化 List 并向其添加变量,否则,它只会将新变量附加到已存在的列表中。
-
你不能。而 null 并不意味着没有初始化。它被初始化为空。如果你想检查 null 然后使用 ref - 它会强制函数的用户传递一个初始化的变量。然后你可以检查它是否初始化为null,如果初始化为空列表。
-
另外,将初始化变量传递给 out 参数也没有任何意义。不能像刚才看到的那样在函数内部使用它
-
我会在一个函数中初始化它。然后在函数退出时对其进行初始化。看起来唯一的选择是强制调用者输入一个初始化的数组并使用
ref。
标签: c# list initialization out