"使用未分配的局部变量"传递ref参数时出错

时间:2014-12-04 00:46:36

标签: c#

此代码生成错误:

  

用于未分配的局部变量'namespace2'

XNamespace namespace2;
string partText = Declaration.partText;
Declaration.partText = string.Empty;
string str = "";
IEnumerable<XElement> source = InputXDoc.Descendants(Function.GetNamespace(ref namespace2, "").GetName("body"));
if (source.Descendants<XElement>(Function.GetNamespace(ref namespace2, "").GetName("div")).Count<XElement>() > 0)
{
    IEnumerable<XElement> introduced5 = InputXDoc.Descendants(Function.GetNamespace(ref namespace2, "").GetName("body"));
    if (introduced5.Descendants<XElement>(Function.GetNamespace(ref namespace2, "").GetName("div")).First<XElement>().Attributes("id").Count<XAttribute>() > 0)
    {
        IEnumerable<XElement> introduced6 = InputXDoc.Descendants(Function.GetNamespace(ref namespace2, "").GetName("body"));
        this.ChapterName = introduced6.Descendants<XElement>(Function.GetNamespace(ref namespace2, "").GetName("div")).First<XElement>().Attributes("id").First<XAttribute>().Value;
    }
}

为什么我会遇到这个?

1 个答案:

答案 0 :(得分:2)

来自ref的{​​{1}}:

  

必须初始化传递给ref参数的参数   在它通过之前。这不同于out参数,其参数   在传递之前不必显式初始化。对于   更多信息,请参阅。

所以你需要写:

XNamespace namespace2 = null;

无论如何,初始化变量总是很好的做法!

注意:我已初始化为null因为我不知道您的参数实际需要初始化为什么。检查您正在呼叫的功能的文档,您可能需要将其作为其他功能。