【发布时间】:2015-05-24 22:42:12
【问题描述】:
例如,你通常不希望构造函数中的参数为空,所以看到类似的东西是很正常的
if (someArg == null)
{
throw new ArgumentNullException(nameof(someArg));
}
if (otherArg == null)
{
throw new ArgumentNullException(nameof(otherArg));
}
代码确实有点混乱。
有没有比这更好的方法来检查参数列表中的参数?
类似于“检查所有参数并在其中任何一个为空时抛出 ArgumentNullException 并为您提供为空的参数。
顺便说一句,关于重复的问题声明,这不是用属性或内置的东西标记参数,而是一些人称之为保护子句的东西,以保证对象接收初始化的依赖关系。
【问题讨论】:
-
也许将它们全部放在一个对象数组中并使用 foreach 循环对其进行迭代?你需要这样的东西吗?
-
我们通常在方法的开头检查我们的参数,就像你的代码sn-p。不仅适用于 null,也适用于其他业务逻辑行为。只要您没有太多参数,我认为这没有任何问题。至少您可以轻松阅读方法的要求。
-
@JoJo 这是个糟糕的主意。您不希望创建一个旨在采用非常特定数量和类型的对象的方法,因为参数采用未知数量的未知类型的对象只是为了轻松检查它们是否为空。你正在通过创造一个更大的问题来解决一个问题。
-
@DanielMann 那么你还能做些什么来让它更短?我只是举个例子
标签: c# constructor arguments