Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

已关闭6年。



Improve this question




假设我有一个方法:
public void SayHello(User user)
{
    if (user == null)
        throw new ArgumentNullException("user");

    Console.Write(string.Format("Hello from {0}", user.Name));
}

显然,我应该使用上面显示的ArgumentNullException来验证用户不为空。现在如何验证user.Name不为空?这样做是一种好习惯吗?
if (string.IsNullOrWhiteSpace(user.Name))
    throw new ArgumentNullException("user", "Username is empty");

最佳答案

不,您不应该为此目的抛出ArgumentNullException,因为它是专门为解决null引用而设计的。



相反,您应该使用ArgumentException或您自己的子类。比方说InvalidUserException或类似的名称。

Even msdn talks about



因此很明显,如果参数为null,则使用ArgumentNullException,否则使用ArgumentException

就是说,理想情况下,您甚至不应该允许某人使用无效的用户名创建User实例。我真的会设计User类,使其永远不能包含Name作为null

关于c# - 嵌套成员的ArgumentNullException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27689802/

10-10 19:39