gpt4 book ai didi

c# - 读取对象属性时忽略 NullReferenceException

转载 作者:太空狗 更新时间:2023-10-29 22:25:14 25 4
gpt4 key购买 nike

是否有任何方法可以指示 C# 忽略一组语句的 NullReferenceException(或与此相关的任何特定异常)。这在尝试从可能包含许多空对象的反序列化对象中读取属性时很有用。有一个辅助方法来检查 null 可能是一种方法,但我正在寻找在语句 block 级别接近“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 消息中——XSD 中的一个可选元素)。现在我需要在访问叶元素之前检查层次结构中的每个元素是否为 null。即,在访问“ID”之前,我必须检查 instance[0]、prop1、prop2 是否不为空。

有没有更好的方法来避免对层次结构中的每个元素进行 null 检查?

最佳答案

简而言之:没有。在尝试使用引用之前对引用进行空检查。这里一个有用的技巧可能是 C# 3.0 扩展方法……它们允许您看起来在空引用上调用某些东西而不会出错:

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

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

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

关于c# - 读取对象属性时忽略 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/298009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com