gpt4 book ai didi

c# - 具有值(value)和值(value)

转载 作者:可可西里 更新时间:2023-11-01 08:38:06 26 4
gpt4 key购买 nike

我在代码审查中注意到了一些东西,想知道它是否合适。

a.EndDate.HasValue && a.EndDate > paymentPeriodEndDate

不应该是:

a.EndDate.HasValue && a.EndDate.Value > paymentPeriodEndDate

注意,a.EndDate 是 DateTime?,而 paymentPeriodEndDate 是 DateTime

应该使用 .Value 吗?或者可以忽略它吗?编译器允许它,并且代码有效。然后我就想知道为什么有一个 .Value 可用。

最佳答案

可空对象可以隐式转换*到它的底层类型,所以

a.EndDate > paymentPeriodEndDate

隐式转换为

((DateTime)a.EndDate) > paymentPeriodEndDate

调用.Value作为 Actor 的一部分。
由于您已经完成了空检查,因此没有实际区别。

I then just wonder why there's a .Value available.

您将使用 Value当编译器无法隐式知道预期输出是什么时(例如,当传递给泛型方法或具有重载的方法时)。由于您正在与另一个 DateTime 进行比较编译器可以推断您的意图并调用 .Value给你。


*从技术上讲,我认为编译器自从 Nullable<T> 中的强制转换运算符以来添加了强制转换。至 Texplicit ,但原理应该是一样的。

关于c# - 具有值(value)和值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28953073/

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