gpt4 book ai didi

c# - 为什么 Nullable 的空传播返回 T 而不是 Nullable

转载 作者:太空狗 更新时间:2023-10-29 23:12:57 26 4
gpt4 key购买 nike

考虑以下代码:

Nullable<DateTime> dt;

dt. <-- Nullable<DateTime>
dt?. <-- DateTime

空传播返回 T , 而不是 Nullable<T> .

如何以及为什么?

最佳答案

因为如果 ?. 左侧的对象为 null,则 null 传播的工作方式永远不会执行右侧的对象。因为您知道右侧永远不会为 null,所以为了方便起见,它去掉了 Nullable,这样您就不需要每次都键入 .Value

你可以把它想象成

public static T operator ?.(Nullable<U> lhs, Func<U,T> rhs) 
where T: class
where U: struct
{
if(lhs.HasValue)
{
return rhs(lhs.Value);
}
else
{
return default(T);
}
}

上面的代码不是合法的 C#,但这是它的行为。

关于c# - 为什么 Nullable<T> 的空传播返回 T 而不是 Nullable<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40666253/

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