Unity中使用C# Nullable时x==null返回false是否为Bug?
Unity中可空值类型
== null判断显示异常问题 问题现象
在Unity里使用C#可空值类型时观测到异常表现:编写代码int? x = null后,x == null的判断结果显示为false,不符合预期的true,但x.HasValue的返回结果完全正常。
复现环境
以下3种环境测试均可稳定复现该现象:
- Unity 2020.3.30f1 + 构建目标WebGL + API兼容级别.Net Standard 2.0
- Unity 2020.3.30f1 + 构建目标Windows + API兼容级别.Net Standard 2.0
- Unity 2019.4.19f1 + 构建目标Windows + API兼容级别.Net Standard 2.0
问题结论
该现象不是Unity引擎的Bug,是Visual Studio调试器导致的显示异常:
在Unity中实际运行代码int? x = null; print(x == null);时,控制台会正确输出true,仅在Visual Studio调试状态下的监视窗口中查看x == null表达式结果时,才会错误显示为false。
日常开发判断可空值类型是否为空时,优先使用HasValue属性,可以完全规避这类调试器显示异常带来的误判。
内容的提问来源于stack exchange,提问作者AdmiralOrange
相关产品推荐
相关产品推荐

