Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#方法输出参数列表初始化不';t与Clear()一起工作_C#_List_Initialization_Out - Fatal编程技术网

C#方法输出参数列表初始化不';t与Clear()一起工作

C#方法输出参数列表初始化不';t与Clear()一起工作,c#,list,initialization,out,C#,List,Initialization,Out,我发现,那个建筑 Method(out List<T>list) { list.Clear(); // doesn't allowed to initialyze List<T>list list = null; // is accepted by VSTO, however, is not so good } 方法(输出列表) { list.Clear();//不允许初始化Listlist list=null;//被VSTO接受,

我发现,那个建筑

Method(out List<T>list)
{
    list.Clear();      // doesn't allowed to initialyze List<T>list
    list = null;       // is accepted by VSTO, however, is not so good
}
方法(输出列表)
{
list.Clear();//不允许初始化Listlist
list=null;//被VSTO接受,但效果不太好
}

有什么建议吗?

此方法不能使用未分配参数。这里有一个简单的规则:无论参数是否初始化都使用,或者将初始化的参数传递给方法时使用

此代码将正确运行:

void Method<T>(ref List<T> list)
{
    list.Clear();
    list = null;
}
void方法(参考列表)
{
list.Clear();
列表=空;
}

阅读此问题中有关差异的更多信息:

如果要使用
out
语义,而不是
ref
,则必须实例化列表:

Method(out List<T>list)
{
    list = new List<T>();
}
方法(输出列表)
{
列表=新列表();
}

out
参数通常用于在方法中创建的对象,而不是用于修改传递到方法中的对象。也许您应该使用
ref
。您需要显示此代码将在其中使用的上下文。谢谢Mattew!事实上,我正在将类中的list字段处理到方法中,如public Liststr=new list()。。。