gpt4 book ai didi

c# - ArgumentException 与 ArgumentNullException?

转载 作者:IT王子 更新时间:2023-10-29 04:33:37 25 4
gpt4 key购买 nike

我正在重构一些代码并添加一个方法来替换(即将被弃用的)方法。新方法具有以下签名:

FooResult Foo(FooArgs args) { ... }

已弃用的方法包含越来越多的参数列表。这些参数现在是 FooArgs 类的属性。已弃用的方法有几个保护条件,用于检查具有以下结构的空值:

if (parameter1 == null)
throw new ArgumentNullException(“parameter1”);
if (parameter... == null)
throw new ArgumentNullException(“parameter...”);
if (parameterN == null)
throw new ArgumentNullException(“parameterN”);

既然参数已经合并到 FooArgs 类中,我是否应该为 FooArgs 参数的各个属性抛出一个 ArgumentNullException:

if (args.Property1 == null)
throw new ArgumentNullException(“args.Property1”);
if (args.Property... == null)
throw new ArgumentNullException(“args.Property...”);
if (args.PropertyN == null)
throw new ArgumentNullException(“args.PropertyN”);

或者为整个 FooArgs 参数抛出一个更通用的ArgumentException:

if (args.Property1 == null)
throw new ArgumentException(“Property1 cannot be null.”, “args”);
if (args.Property... == null)
throw new ArgumentException(“Property... cannot be null.”, “args”);
if (args.PropertyN == null)
throw new ArgumentException(“Property2 cannot be null.”, “args”);

谢谢!

最佳答案

您需要为 args 本身添加非空检查。 ANE 不适用于单个组件,因此您需要使用更通用的 AE,如下所示:

if (args == null)
throw new ArgumentNullException(“args”);
if (args.Property1 == null)
throw new ArgumentException(“Property1 cannot be null.”, “args”);
if (args.Property... == null)
throw new ArgumentException(“Property... cannot be null.”, “args”);
if (args.PropertyN == null)
throw new ArgumentException(“Property2 cannot be null.”, “args”);

关于c# - ArgumentException 与 ArgumentNullException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8459755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com