空条件运算符不起作用(显示“调用不是xxx的成员”)

时间:2019-04-18 16:24:39

标签: vb.net

我似乎找不到其他人遇到同样的问题。我已经看到您可以在VB.NET中使用空条件运算符。例如

SendNews?.Invoke("Just in: A newsworthy item...")

但是,我收到“该邀请不是SendNews的成员”

我尝试设置“ Option Infer On”,但仍然收到此错误。

有什么想法吗? (使用.net 4.6.1)

1 个答案:

答案 0 :(得分:-1)

使用空条件运算符代替空检查。例如,代替此:

If SendNews IsNot Nothing Then
    SendNews.Invoke("...")
End If

您可以将其缩短为:

SendNews?.Invoke("...")

但是,这就是所有。它不检查对象是否实际包含正在访问的成员。如果您使用后期绑定(Dim SendNews As ObjectOption Strict Off,相当于在C#中使用dynamic),则空条件运算符将在方法调用不存在的情况下不跳过物体。它仍将引发与其他情况相同的异常。当前,检查绑定对象是否包含特定方法的唯一方法是捕获并忽略该异常,或者通过反射按字符串名称查找该异常。