You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中使用Getter和Setter简写语法时如何进行数据验证?

C#自动属性能否做数据验证?

直接用public int GrossSallery { get;set; }这种自动属性简写的话,没办法直接添加数据验证逻辑。

这种写法是C#的语法糖,编译器会自动生成一个隐藏的私有字段,get和set方法只是简单读写这个字段,没有留给你插入自定义验证的空间。

你提到的手动扩展属性的方式是实现验证的正确思路,但你给出的示例里,输入值不合法时直接return忽略赋值的处理不够友好——调用方根本不知道赋值失败了,容易引发隐蔽的bug。更合理的做法是抛出明确的异常,让调用方及时感知错误:

private int _grossSalary;

public int GrossSalary
{
    get => _grossSalary;
    set
    {
        if (value <= 0)
            throw new ArgumentOutOfRangeException(nameof(value), "薪资不能小于等于0");
        _grossSalary = value;
    }
}

如果想保持代码简洁,C# 6及以上版本可以用表达式体来写get方法,完全不影响验证逻辑的实现。

内容的提问来源于stack exchange,提问作者M.Sohail Shaheen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 10:12:00