多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] 这里有一个创建变量并初始化它的例子: ~~~ var name = 'Bob'; ~~~ 变量存储引用。名为name的变量包含对字符串对象的引用,值为“Bob”。 name变量的类型被推断为String,但是您可以通过指定它来更改该类型。如果对象不限于单一类型,请按照[设计指导]原则指定对象 (Object)或动态(dynamic)类型。 ~~~ dynamic name = 'Bob'; ~~~ 另一种方法是显式声明要推断的类型: ~~~ String name = 'Bob'; ~~~ >注意:这个页面遵循了对本地变量使用var而不是类型注解的风格指南建议。 > ## 默认值 未初始化的变量的初始值为null。甚至具有数字类型的变量最初也是null,因为数字——就像dart中的其他东西一样——是对象。 ~~~ int lineCount; assert(lineCount == null); ~~~ >注意:在生产环境中,assert()调用被忽略。在开发环境中当assert(condition) 的condition条件不为真时抛出一个异常。详细信息请查看[ Assert]。 > ## Final 和 const修饰符 如果您从未打算更改一个变量,请使用final或const修饰他,而不是使用var或其他变量类型。最终变量只能设置一次;const变量是一个编译时常数。(Const变量是隐式最终变量。)最终的顶级或类变量在第一次使用时被初始化。 >注意:实例变量可以是final,但不能是const。[*实例变量定义在对象一级,它可以被类中的任何方法或者其他类中的方法访问,但是不能被静态方法访问。*] > 这里有一个创建和设置final变量的例子: ~~~ final name = 'Bob'; // Without a type annotation final String nickname = 'Bobby'; ~~~ 您无法更改final变量的值: ~~~ name = 'Alice'; // Error: a final variable can only be set once. //这个是错误示例,在使用时final变量是不可以更改的 ~~~ 对于想要在编译时确定并且不再变的变量,使用const。如果const变量位于类级别,则将其标记为静态const。在声明该变量时,将该值设置为编译时常量,例如数字或字符串字面量、const变量或常量数字算术运算的结果: ~~~ const bar = 1000000; // Unit of pressure (dynes/cm2) const double atm = 1.01325 * bar; // Standard atmosphere ~~~ const关键字不只是声明常量变量。您还可以使用它来创建常量值,以及声明创建常量值的构造函数。任何变量都可以赋一个常量值。 ~~~ var foo = const []; final bar = const []; const baz = []; // Equivalent to `const []` ~~~ 您可以从const声明的初始化表达式中省略const,如上面的baz。有关细节,请参见[不要多余的使用const]。 您可以更改一个非final的非const变量的值,即使它曾经有一个const值: ~~~ foo = [1, 2, 3]; // Was const [] ~~~ 你不能改变const变量的值: ~~~ baz = [42]; // Error: Constant variables can't be assigned a value. ~~~ 有关使用const创建常量值的更多信息,请参见 [Lists], [Maps], 和 [Classes]。