我总是用Nullable<>.HasValue,因为我喜欢它的语义.然而,最近我在别人的现有代码库上工作,他们只使用Nullable<> != null.

是有理由使用其中一个而不是另一个,还是纯粹的偏好?

  1. int? a;
    if (a.HasValue)
        // ...
    

  1. int? b;
    if (b != null)
        // ...
    

推荐答案

编译器将null个比较替换为对HasValue的调用,因此没有真正的区别.只要做对你和你的同事更具可读性/更有意义的事情就行了.

.net相关问答推荐

为什么我在环境变量中有不同的值?

.NET MAUI 的登录页面

process.WaitForExit() 异步

value 的默认参数必须是编译时间常数?

在一个 LINQ 查询中获取两列的总和

我可以从 .NET/C# 获取其他进程的命令行参数吗?

app.config 文件和 XYZ.settings 文件有什么区别?

无法加载文件或程序集WebGrease,版本=1.5.1.25624,Culture=neutral,PublicKeyToken=31bf3856ad364e35或其依赖项之一

找不到 Assert.Fail 和 Assert.Pass 或等效项

dotnet 恢复警告 NU1701

如何使我的托管 NuGet 包支持 C++/CLI 项目?

微软内部 PriorityQueue 中的错误?

获取系统中已安装的应用程序

如何从文件中删除单个属性(例如只读)?

合并两个(或更多)PDF

从字节数组中读取 C# 中的 C/C++ 数据 struct

System.Array.CopyTo() 和 System.Array.Clone() 之间的区别

序列化和反序列化 .NET 对象的最快方法

不签署 .NET 程序集有什么问题吗?

在构建事件命令行中放置注释的正确方法?