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

如何在C#及.NET MVC Web服务中对Money字段进行空值检查?

正确检查.NET MVC中Money字段空值的方法

我来帮你搞定这个Money字段空值检查的问题~首先得搞清楚你的Money类型到底是值类型(struct)还是引用类型(class),这直接决定了空值检查的正确方式:

情况1:Money是值类型(结构体)

值类型(比如自定义的struct Money)默认不会为null,它会有一个默认的初始化值(比如金额为0),所以你原来的!= null判断永远会返回true,自然达不到预期效果。

解决办法是把属性改成可空值类型,这样就能支持null了:

// 修改属性定义为可空类型
public Money? Amount { get; set; }

然后检查空值的时候,有两种写法都可行:

// 方法1:使用HasValue判断
if (EntityObject.Amount.HasValue) {
    Entity.Attributes.Add("budget amount", EntityObject.Amount.Value);
}

// 方法2:直接判断null(可空类型支持这种写法)
if (EntityObject.Amount != null) {
    Entity.Attributes.Add("budget amount", EntityObject.Amount.Value);
}

情况2:Money是引用类型(类)

如果Money是引用类型,但它的默认实例不是null(比如有默认构造函数初始化了金额为0),那单纯判断!= null也没意义,因为即使没赋值,它也会是一个带有默认值的实例。

这时候需要检查它的内部核心字段,比如假设Money类有一个Decimal类型的Value属性,你可以这么写:

// 先判断实例不为null,再判断金额不是默认的0值
if (EntityObject.Amount != null && EntityObject.Amount.Value != 0) {
    Entity.Attributes.Add("budget amount", EntityObject.Amount);
}

情况3:使用框架自带的Money类型

如果你用的是某些框架(比如ORM、财务类库)提供的Money类型,这类类型通常会自带空值/空状态的判断方法,比如IsEmpty(),直接调用即可:

if (!EntityObject.Amount.IsEmpty()) {
    Entity.Attributes.Add("budget amount", EntityObject.Amount);
}

总结一下:先确认你的Money类型的本质,再选择对应的检查方式,就能解决空值判断不生效的问题啦~

内容的提问来源于stack exchange,提问作者kiran girase

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:38:52