C#内联空检查处理失效,请求排查空引用异常原因
问题排查与解决方案
问题根源
你的代码在ViewModel.OccupationRefer为null时,会直接调用ToString()方法,而null对象无法调用成员方法,这就是空引用异常的原因。原代码的逻辑顺序错误:先执行了ToString(),再做空字符串判断,完全跳过了对象本身的null检查。
修正方案
方案1:基础null判断
直接先检查对象是否为null,再决定取值:
var x = ViewModel.OccupationRefer == null ? string.Empty : ViewModel.OccupationRefer.ToString();
方案2:C# 6+ 简化写法(推荐)
利用空条件运算符?.和空合并运算符??实现更简洁的内联逻辑:
var x = ViewModel.OccupationRefer?.ToString() ?? string.Empty;
?.:当OccupationRefer为null时,整个表达式ViewModel.OccupationRefer?.ToString()返回null??:将前面的null结果替换为空字符串,完美匹配你的需求
额外考虑:ViewModel本身可能为null的情况
如果ViewModel也存在null的可能,需要进一步扩展空检查:
var x = ViewModel?.OccupationRefer?.ToString() ?? string.Empty;
内容的提问来源于stack exchange,提问作者Steve Newton
相关产品推荐
相关产品推荐

