gpt4 book ai didi

c# - 验证构造函数参数的正确方法是什么

转载 作者:太空狗 更新时间:2023-10-29 22:18:09 25 4
gpt4 key购买 nike

所以我有一个在其构造函数中带有单个字符串参数的类:

public MyClass(string name)
{
this.Name = name;
}

但我从不想担心有人用 NULL 或零长度字符串的名称初始化 MyClass 的实例。什么是最好的验证参数?对于属性或方法,您始终可以不执行任何操作、返回 null 或在提供无效参数时不设置任何内容。但是,一旦调用了构造函数,就已经创建了对象的实例,而不管它是否传递了有效参数。

抛出如下所示的异常是最好的方法吗?还是有其他更受欢迎的方法?

public MyClass(string name)
{
if (name == null | name == "") throw new ArgumentException("Name can not be null or blank", "name");

this.Name = name;
}

当然,如果参数无效,我总是可以将名称设置为一些默认值,例如“Unnamed MyClass”,但在这种情况下,我宁愿只阻止无效名称,然后尝试假设一些替代行为。

最佳答案

  1. 抛出一个ArgumentNullException
  2. 如果 namenull,则 ctor 抛出 ArgumentNullException 的文档
  3. 如果您使用 Code Contracts , 在参数验证后添加 Contract.EndContractBlock() 行。

编辑:而不是这个:

if (name == null || name == "")

使用这个:

if (string.IsNullOrEmpty(name))

关于c# - 验证构造函数参数的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157139/

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