gpt4 book ai didi

c# - 编译器如何理解 Nullables?

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

如果我有一个方法:

protected int CalculateActualDuration(DateTime? startDate, DateTime? endDate) {
if (startDate.HasValue && endDate.HasValue) {
return Math.Abs((int)(endDate.Value.Subtract(startDate.Value).TotalMinutes));
}
else {
return 0;
}
}

我可以通过同时传入 DateTime 来调用该方法吗?和一个日期时间。那么编译器如何理解差异呢?

这是否意味着如果我传入一个 DateTime 值,if 语句本质上将类似于

if (true && true)

并且所有 *.value 都已更改为正确的对象?那么所有 endDate.Value 现在都是 EndDates 了吗?

编译器是否在运行时将所有非 Nullable 的参数都转换为 Nullable?

最佳答案

方法中的所有内容都保持不变,startDateendDate参数仍然是 Nullable<T> struct 的实例.

当你通过一个“正常”的DateTime对于该方法,您正在利用 implicit conversionNullable<T> 中指定结构:

public static implicit operator Nullable<T>(T value) {
return new Nullable<T>(value);
}

来自上面链接的 MSDN 页面:

If the value parameter is not null, the Value property of the new Nullable value is initialized to the value parameter and the HasValue property is initialized to true.

关于c# - 编译器如何理解 Nullables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401384/

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