gpt4 book ai didi

c# - 类型转换 (int?)null 与 new int?() - 哪个更好?

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

我使用 Nullable<T>当我需要它们可以为 null 时将值加载到类和结构中时,类型很多,例如从数据库加载一个可以为 null 的值(如下例所示)。

考虑这段代码:

public class InfoObject
{
public int? UserID { get; set; }
}

// Load the ID into an SqlInt32
SqlInt32 userID = reader.GetSqlInt32(reader.GetOrdinal("intUserID"));

当我需要将值加载到可为 null 的属性中时,有时我会这样做:

infoObject.UserID = userID.IsNull ? (int?)null : userID.Value;

有时我会这样做:

infoObject.UserID = userID.IsNull ? new int?() : userID.Value;

虽然他们取得了相同的结果,但我想看看是否有人知道在(int?)null 之间使用哪个更好。和 new int?()关于性能、最小的 IL 代码、最佳实践等?

一般来说,我一直偏爱 new int?()上面代码的版本,但我不确定是否类型转换 (int?)null编译器解析速度比 new int?() 更快.

干杯!

最佳答案

它们将生成相同的 IL。使用您认为更容易阅读的任何一个。

当您谈论“让编译器更快地解决问题”时,您是在谈论微优化您的构建时间吗?我不知道哪一个会更快,但我怀疑它是否会对任何重要的代码体产生可靠且可衡量的差异。

就我个人而言,只要我可以毫不含糊地这样做,我就会使用 null;我想我仍然更喜欢强制转换而不是调用 new,但这并没有什么区别。

关于c# - 类型转换 (int?)null 与 new int?() - 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243625/

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