假设我有一个类(class) Foo
具有复杂的属性 Bar
.然后,假设我在其他类中有一个如下所示的方法:
public void DoSomething(Foo foo)
{
if (foo == null)
throw new ArgumentNullException("foo");
if (foo.Bar == null)
throw new ArgumentNullException("bar");
}
是否使用
ArgumentNullException
尽管严格来说,这里是合适的,foo.Bar
在这种情况下不是一个论点吗?我have read并且可以理解,抛出NullReferenceException
是不合适的。手动。这是在告诉我我需要抽象吗?public void DoSomething(Foo foo)
{
if (foo == null)
throw new ArgumentNullException("foo");
DoSomethingElse(foo.Bar);
}
private void DoSomethingElse(Bar bar)
{
if (bar == null)
throw new ArgumentNullException("bar");
}
我的第一个代码片段是
ArgumentNullException
的“正确”用法吗? ?处理这种情况的常规方法是什么?谢谢。
最佳答案
理想情况下,Foo
类将确保其 Bar
属性永远不会为空。如果那不可能,我会抛出 ArgumentException
在这种情况下,因为参数不为空,但它是无效的。
关于c# - 访问参数的属性时使用 ArgumentNullException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099218/