gpt4 book ai didi

c# - GetValueOrDefault 是如何工作的?

转载 作者:IT王子 更新时间:2023-10-29 04:43:21 26 4
gpt4 key购买 nike

我负责 LINQ 提供程序,该提供程序对 C# 代码执行一些运行时评估。例如:

int? thing = null;
accessor.Product.Where(p => p.anInt == thing.GetValueOrDefault(-1))

目前,由于 thing 为空,上述代码不适用于我的 LINQ 提供程序。

虽然我已经使用 C# 很长时间了,但我不知道 GetValueOrDefault 是如何实现的,因此我应该如何解决这个问题。

所以我的问题是:GetValueOrDefault 在调用它的实例为空的情况下如何工作?为什么不抛出 NullReferenceException

后续问题:鉴于我需要处理空值,我应该如何使用反射复制对 GetValueOrDefault 的调用。

最佳答案

thing不是 null .由于结构不能是 null , 所以 Nullable<int>不可能是null .

事情是......它只是编译器的魔法。你认为null .事实上,HasValue刚刚设置为 false .

如果您调用 GetValueOrDefault 它检查是否 HasValuetruefalse :

public T GetValueOrDefault(T defaultValue)
{
return HasValue ? value : defaultValue;
}

关于c# - GetValueOrDefault 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29626329/

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