在验证方法的输入时,我过去会检查参数是否为空,如果是,则抛出ArgumentNullException异常。我对列表中的每个参数都这样做,所以最终代码看起来像这样:
public User CreateUser(string userName, string password,
string Email, string emailAlerts,
string channelDescription)
{
if (string.IsNullOrEmpty(userName))
throw new ArgumentNullException("Username can't be null");
if (string.IsNullOrEmpty(Email))
throw new ArgumentNullException("Email can't be null");
//etc, etc, etc
}
这样做可以吗?为什么我要这样做?如果我只是将所有检查分组并返回null值而不是抛出异常,那么可以吗?如何最好地解决这种情况?
附:我想改变这种情况,因为在长方法中这样做非常乏味。
有什么建议吗?
nameof
来获取参数的名称:if (foo == null) throw new ArgumentNullException(nameof(foo));
。这种模式在下面大部分答案中都很有用。 - Gordon Bean