当前位置:  开发笔记 > 编程语言 > 正文

读取对象属性时忽略NullReferenceException

如何解决《读取对象属性时忽略NullReferenceException》经验,为你挑选了1个好方法。

是否有任何方法可以指示C#忽略NullReferenceException(或任何特定的例外情况)一组语句.当尝试从可能包含许多空对象的反序列化对象中读取属性时,这很有用.有一个帮助方法来检查null可能是一种方法,但我正在寻找一个接近于'On Error Resume Next'(来自VB)的语句级别的块.

编辑:Try-Catch将跳过关于异常的后续语句

try
{
   stmt 1;// NullReferenceException here, will jump to catch - skipping stmt2 and stmt 3
   stmt 2;
   stmt 3;
}
catch (NullReferenceException) { }

例如:我将XML消息反序列化为对象,然后尝试访问类似的属性

Message.instance[0].prop1.prop2.ID

现在prop2可能是一个空对象(因为它不存在于XML Message中 - XSD中的可选元素).现在我需要在访问叶元素之前检查层次结构中每个元素的null.即在访问"ID"之前,我要检查实例[0],prop1,prop2是否为空.

是否有更好的方法可以避免对层次结构中的每个元素进行空值检查?



1> Marc Gravell..:

简而言之:没有.在尝试使用之前,请先检查参考.这里有一个有用的技巧可能是C#3.0扩展方法......它们允许你出现在空引用上调用某些内容而不会出现错误:

string foo = null;
foo.Spooky();
...
public static void Spooky(this string bar) {
    Console.WriteLine("boo!");
}

除此之外 - 也许有些使用条件运算符?

string name = obj == null ? "" : obj.Name;

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有