Casting(int?)null与new int?() - 哪个更好?

Cod*_*uth 5 c# performance nullable

Nullable<T>当我需要将值加载到类和结构中时,我需要使用类型很多,例如从数据库加载可空值(如下例所示).

考虑这段代码:

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

// Load the ID into an SqlInt32
SqlInt32 userID = reader.GetSqlInt32(reader.GetOrdinal("intUserID"));
Run Code Online (Sandbox Code Playgroud)

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

infoObject.UserID = userID.IsNull ? (int?)null : userID.Value;
Run Code Online (Sandbox Code Playgroud)

有时我这样做:

infoObject.UserID = userID.IsNull ? new int?() : userID.Value;
Run Code Online (Sandbox Code Playgroud)

虽然他们获得相同的结果,我想看看是否有人知道,这是更好之间使用(int?)null,并new int?()与性能有关的,最小的IL代码,最佳实践等?

一般来说,我一直偏爱new int?()上面代码的版本,但我不确定(int?)null编译器是否可以更快地进行转换new int?().

干杯!

Jon*_*eet 8

他们将生成相同的IL.使用您觉得更容易阅读的内容.

当你谈到"编译器更快解决"的问题时,你是在谈论微优化你的构建时间吗?我不知道哪个会更快,但我怀疑它会为任何重要的代码体系带来可靠的可衡量的差异.

就个人而言,null无论什么时候我都可以使用,没有任何歧义; 我想我仍然普遍喜欢演员来电话new,但这并没有什么不同.