使用未分配的输出参数

use*_*862 1 .net c# oop url

我正在传递数据列表以进一步解析

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 });
   }       
}
Run Code Online (Sandbox Code Playgroud)

我得到了vs错误

使用未分配的参数'urls'

为什么我收到此错误,因为我将新对象分配到现有列表中?

cod*_*sed 6

Out变量应该在被调用的方法下定义.

http://msdn.microsoft.com/en-us/library/t3c3bfhx.aspx

尽管作为out参数传递的变量在传递之前不必初始化,但是在方法返回之前需要调用方法来赋值.

因此你应该写为:

public void MyMethod()
{
    List<MyUrl> urls = null;
    ...
    ExtractData(out urls);
}
private static void(out List<MyUrl> urls)
{
  urls = new List<MyUrl>();
   ...
   foreach(var item in items)
   {
       urls.Add(new MyUrl{ Url = item.Url });
   }       
}
Run Code Online (Sandbox Code Playgroud)