【发布时间】:2011-07-24 13:42:09
【问题描述】:
是否可以遍历函数参数以检查它们是否为空(或通过另一个自定义函数检查它们)? 像这样:
public void test (string arg1, string arg2, object arg3, DataTable arg4)
{
foreach (var item in argus)
{
if( item == null)
{
throw;
}
}
// do the rest...
}
“argus”的正确关键字是什么?我知道这可以通过更多的 if 语句来实现,但正在寻找一种更快的方法......
【问题讨论】:
-
我认为您需要考虑反思。与简单的方法相比,您尝试做的事情似乎不值得麻烦(这很容易通过剪切和粘贴)。
-
这可以在动态语言和具有元编程支持的静态类型语言中以直接的方式完成。例如,Nemerle 在其默认设计的合约库中具有 NotNull 关键字。
-
我强烈建议单独检查每一个并抛出带有特定参数名称的 ArgumentNullException。您可以写出每个检查并在一行中抛出,从而最大限度地减少代码膨胀。这提供了更具体的反馈,并且不会花费很长时间来编写。如果您想节省时间,您可以使用 sn-p,并且大多数生产力工具都有注入此代码的方法(例如,ReSharper 可以通过每个参数的几次击键插入检查。)即使使用“vanilla”Visual Studio,Auto -completion 使得手工编写这个需要相当少的击键。