ewo*_*ack 0 c# null exception-handling operators
我有一个简单的C#语句:
var code = container.thing.result.decode ?? "Unknown";
Run Code Online (Sandbox Code Playgroud)
抛出"对象引用未设置为对象的实例".数据库值为null时的异常.它与非空值完美配合(到目前为止).我试着更明确地用三元运算符重写该行:
var outcome = container.thing.result.decode == null ? "Unknown" : container.thing.result.decode;
Run Code Online (Sandbox Code Playgroud)
并且我得到了相同的异常相同的结果(并且ReSharper引导我回到更简单的语句).
我也读过那个?? 运算符仅适用于可空类型.我正在使用的字段不是可空类型,它是nvarchar(100),也是查找表的外键.如上所述,该语句使用有效的非null值.
应用程序的ORM也有一个CODE值,用于生成CODE和DECODE对,它看起来像应该映射到查找表.
但我无法弄清楚如何处理空值.
谢谢!
编辑:谢谢你的快速回复!我确实发现了在发布后几分钟我感到困惑的地方.我认为写出问题有助于我描述问题.我更改了语句以检查引用查找表的实际字段是否为null:
var outcome = container.thing.database_code_field == null ? "Unknown" : container.thing.result.Decode;
Run Code Online (Sandbox Code Playgroud)
这看起来像我想要的.再次感谢你!
如果以下任何一个为null,您将收到异常:
containercontainer.thingcontainer.thing.result我们无法分辨您的情况中哪些值为null,或者null是否为有效值.你应该解决这个问题,然后修复任何给你空值的东西,或编写代码来处理这种情况.