Dart中String类型的默认值是什么?指定代码执行结果解析
关于Dart String默认值及代码执行结果的解答
1. Dart中String类型的默认值是什么?
得先明确Dart的空安全状态,这是影响结果的核心:
- 在Dart 2.12+默认开启的空安全模式下,非Nullable的
String类型(直接声明为String)没有默认值——你必须在声明时或使用前给它赋值,否则编译器直接报错,根本没法运行。 - 如果是Nullable的
String?类型,它的默认值是null。另外你提到的''是空字符串,这是需要主动赋值的实例,并不是默认值哦。
2. 给定代码的执行结果
先看你提供的代码:
String myString; print(myString); print(myString==''); print(myString==null);
这里分两种场景来看:
关闭空安全的环境(比如Dart 2.11及更早版本,或手动关闭空安全):这段代码可以正常运行,输出结果依次是:
- 第一行打印
null(未初始化的变量默认会被设为null) - 第二行打印
false(null和空字符串''是完全不同的对象,两者不相等) - 第三行打印
true(此时myString的值确实是null)
- 第一行打印
开启空安全的环境:这段代码无法通过编译,编译器会抛出错误:
Non-nullable variable 'myString' must be initialized.——因为非Nullable的String必须初始化后才能使用,根本到不了执行环节。
内容的提问来源于stack exchange,提问作者Looksee
相关产品推荐
相关产品推荐

