【问题标题】:What's the differences between "!" and "?" operators in dart null safety?"!" 和有什么不一样和 ”?” dart null 安全中的操作员?
【发布时间】:2021-07-19 11:11:36
【问题描述】:

谁能解释一下两者之间的区别 使用这个:

final block = blocks?.first;

还有这个:

final block = blocks!.first;

blocks 在哪里:

List<Block>? blocks

【问题讨论】:

    标签: flutter dart dart-null-safety


    【解决方案1】:

    当你使用blocks?.first时,blocks的值可以是null,但是当你使用blocks!.first时,你告诉编译器你确定blocksnot null

    final block = blocks!.first; 表示您完全确信List&lt;Block&gt;? blocks 在块分配之前已初始化。

    同样在final block = blocks?.first;block 将是可为空的,但在final block = blocks!.first;block不可为空强>.

      List<Block>? blocks;
      ...
      // you are not sure blocks variable is initialized or not.
      // block is nullable.
      final Block? block = blocks?.first;
    
      // you are sure blocks variable is initialized.
      // block is not nullable.
      final Block block = blocks!.first;
    

    【讨论】:

    • 如此简单和漂亮。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2022-06-19
    • 2011-01-26
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    相关资源
    最近更新 更多