将空值传递给递归方法

时间:2011-02-22 07:24:15

标签: c#

我有一个方法,如果某个条件为真,我想调用它自己。最初,该方法接受一个参数,其值在达到所述条件之前发生变化。

public static void Build(string str)
{
    var tree = XmlBuilder.Load();
    foreach (var section tree.Sections)
    {
        str += section.Name;
        foreach (var variable in tree.Sections[section].Variables)
        {
            //
        }
    }
    if (tree.Sections[section].Sections.Count > 0)
    {
        // here I want to call Build(null)
    }
}

我还没有检查空值 - 只是想先知道这是否可行?如果我说if (str==null) { }因为str有值而无效,那么对吗?有没有办法检查通过该方法的值是什么?

5 个答案:

答案 0 :(得分:1)

String是引用类型,因此它可以为null。请注意:

string str = null;
str += "foo";

// Now str == "foo"

答案 1 :(得分:1)

如果您执行此类操作,则可以保留传递给方法的原始值:

public static void Build(string str)
{
    string localStr = str;

    var tree = XmlBuilder.Load();
    foreach (var section tree.Sections)
    {
        localStr += section.Name;
        foreach (var variable in tree.Sections[section].Variables)
        {
            //
        }
    }
    if (tree.Sections[section].Sections.Count > 0)
    {
        // here I want to call Build(null)
    }
}

答案 2 :(得分:0)

在更改之前,只需将其保存到另一个变量中。在更改参数后,.NET无法获取参数的传入值。

答案 3 :(得分:0)

你可以向str = null的函数发送'null',或者你可以检查它是否为“”或String.Empty

答案 4 :(得分:0)

是的,您可以传递null作为参数。

然后你可以检查代码str == null,并输入所需的逻辑。