C# 方法输出参数列表初始化不适用于 Clear()

C# method out parameter list initialization doesn't works with Clear()

我发现,那个构造

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
}

有什么建议吗?

您不能在此方法中使用未分配的参数。有一个简单的规则:如果将初始化参数传递给方法,则使用 out whether parameter is not initialized or use ref

此代码 运行 正确:

void Method<T>(ref List<T> list)
{
    list.Clear();
    list = null;
}

阅读更多关于这个问题的差异:What's the difference between the 'ref' and 'out' keywords?

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

Method(out List<T>list)
{
    list = new List<T>();
}