在处理递归数据结构时,需要遵循一些最佳实践以避免空引用异常。以下是一些具体的建议:
1.在访问递归结构的属性或方法之前,一定要检查该属性或方法所依赖的子对象是否为null,如果为null,则应该提前返回null:
public class Tree
{
private List children;
public Tree[] Children
{
get
{
if (children == null) return null;
return children.ToArray();
}
}
public void AddChild(Tree child)
{
if (child == null) return;
if (children == null) children = new List();
children.Add(child);
}
}
2.使用.NET Framework 4.5及更高版本提供的?操作符,可以优雅地避免null引用异常。例如:
var name = person?.Address?.City;
3.使用Guard类将null检查代码隐藏在一个方法中,从而使代码更加清晰:
public static void GuardAgainstNull(object obj, string parameterName)
{
if (obj == null)
{
throw new ArgumentNullException(parameterName);
}
}
public class Tree
{
private List children;
public Tree[] Children
{
get
{
GuardAgainstNull(children, "children");
return children.ToArray();
}
}
public void AddChild(Tree child)
{
GuardAgainstNull(child, "child");
if (children == null) children = new List();
children.Add(child);
}
}
下一篇:避免在C#中使用魔术字符串