?运算符避免 dart 中的 NoSuchMethodError

? operator to avoid NoSuchMethodError in dart

我看到有人试图通过使用 ? 来避免 NoSuchMethodError 的视频。操作员 。这是代码:

/*1*/ void main () {

/*2*/ var v = vu() ;
/*3*/ var f = v.casting()  ;
/*4*/ f.tbu ;

/*5*/}

第 4 行显示错误

Unhandled exception: NoSuchMethodError: The getter 'tbu' was called on null. Receiver: null Tried calling: tbu

但他用了?运算符:

/*1*/ void main () {

/*2*/ var v = vu() ;
/*3*/ var f = v.casting()  ;
/*4*/ f?.tbu ;

/*5*/}

运行没问题。

My question is what is the ? operator ??

点之前的问号允许 conditional property access,它防止尝试访问可能为 null 的对象的 属性 或方法:

myObject?.someProperty

等同于:

(myObject != null) ? myObject.someProperty : null

这类似于 JavaScript 中的 optional chaining