【发布时间】:2014-09-14 06:08:32
【问题描述】:
我正在传递数据列表以进一步解析
public void MyMethod()
{
var urls = new List<MyUrl>();
...
ExtractData(out urls);
}
private static void ExtractData(out urls)
{
...
foreach(var item in items)
{
urls.Add(new MyUrl{ Url = item.Url });
}
}
我得到 vs 错误
使用未分配的输出参数'urls'
为什么我在将新对象分配到现有列表中后出现此错误?
【问题讨论】:
-
out 参数应该在 ExtractData 方法中设置。
out参数不能用于从调用者传递输入,但它严格用于从被调用方法获取输出。 -
看起来你在这里缺少方法的名称
private static void(out urls) -
@BrianRasmussen 谢谢,已编辑。
-
您首先不应该将其作为
out传递。传递引用,而不是对包含引用的变量的引用。当您打算更改变量时,您使用out传递,但您不打算更改变量,您打算更改的值所引用的对象变量,所以传递值,而不是对变量的引用。只需删除out就可以了。 -
我非常同意埃里克的观点。另外,根据我的经验,我总是建议避免使用
out,除非绝对必要。总会有更好的方法。