如何解决此错误“无法对空引用执行运行时绑定”;c#

本文关键字:执行 引用 运行时 绑定 何解决 解决 错误 | 更新日期: 2023-09-27 17:52:43

我已经解析了一个Json响应:

string url = "http://words.bighugelabs.com/api/2/API KEY/" + word.ToString() + "/json";

并存储在名为sbb的字符串中。然后,我将sbb存储在一个动态对象中,如下所示,以便检索给定单词的特定信息,例如名词。因为它每次只返回一个单词的信息。

dynamic foo = JObject.Parse(sbb);
var ant = foo.adjective.ant;

但是在foo之后,它并不总是跟随形容词,它可能是名词或其他东西,所以当我尝试查看var是否为null时,我有错误消息。我能做些什么来检查哪种情况是空的或不是?这四种情况是:

foo.adjective.ant; foo.noun.ant; foo.adverb.ant; foo.verb.ant;

如何解决此错误“无法对空引用执行运行时绑定”;c#

做一个防御性的null检查

if(foo != null && foo.adjective != null)

如果你正在使用c# 6,那么你也可以使用null传播操作符?,如

if(foo?.adjective != null)

如何:

var ant = foo.adjective != null ? foo.adjective.ant :
          (foo.noun != null ? foo.noun.ant :
          (foo.adverb != null ? foo.adverb.ant :
          (foo.verb != null ? foo.verb.ant : null)));