我有一个方法,如果某个条件为真,我想调用它自己。最初,该方法接受一个参数,其值在达到所述条件之前发生变化。
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有值而无效,那么对吗?有没有办法检查通过该方法的值是什么?
答案 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
,并输入所需的逻辑。