【发布时间】:2016-07-08 14:28:49
【问题描述】:
抱歉这个愚蠢的问题。
假设我有这个类(代码在 C# 中):
class Foo {
public List<string> Bars { get; set; }
public Foo() { }
}
现在我想实现一个在Bars上执行一些操作的方法,例如Foo.Translate()。
我是否应该始终检查我尝试访问/修改的内容是否为空或有效?
class Foo {
public List<string> Bars { get; set; }
public Foo() { }
public void Translate()
{
// Should I check with a null && count > 0?
if (Bars != null && Bars.Count > 0)
{
[...]
}
}
}
【问题讨论】:
-
如果
Bars永远为空,那么你应该在访问它之前检查它是否为空,否则你会得到一个空引用异常。检查它是否非零是业务逻辑.. -
不,
Foo类的其余部分应确保始终保持不变。 -
Bars虽然是公开的,但另一个类可以将其设置为 null。 -
我认为你们对示例中的实现有点过于执着,没有花足够的时间思考实际问题:“我是否应该始终检查我要访问/修改的内容是不为空或有效?”