Dart this 关键字17 Mar 2025 | 4 分钟阅读 this 关键字用于引用当前类的对象。它指示类、方法或构造函数的当前实例。它也可以用于调用当前类的方法或构造函数。它消除了类属性和参数名称相同时的不确定性。如果我们将类属性声明为与参数名称相同,这种情况会在程序中产生歧义,那么 this 关键字可以通过为类属性添加前缀来消除歧义。它可以作为参数传递给类方法或构造函数。
让我们通过以下示例来了解 this 关键字的工作方式。 示例 - 不使用 this 关键字输出 Mobile's model name is: iPhone 11 , and the manufacture year is: 2020
说明在上面的程序中,我们创建了一个名为 Mobile 的类,它有两个属性 modelname 和 man_year。然后,我们创建了一个构造函数,并传递了与类属性名称相同的参数。 在构造函数体中,左侧的类变量(属性)由具有相同名称的构造函数参数赋值。 当我们创建类的一个实例时,构造函数会自动调用构造函数并打印结果。 如果存在大量同名参数,Dart 编译器可能会感到困惑。 结果是编译器会产生歧义。 这就是我们使用 this 关键字来引用当前类对象的原因。 示例 - 2:使用 this 关键字输出 Mobile's model name is: IPhone 11, and the manufacture year is: 2020
说明上面的示例与之前的程序相同,但唯一的区别是 this 关键字。 我们使用 this 关键字来区分本地变量的不同实例或类变量。 注意事项this 关键字用于指向当前类对象。- 它可以用于引用当前的类变量。
- 我们可以使用
this 关键字实例化或调用当前的类构造函数。 - 我们可以将
this 关键字作为构造函数调用中的参数传递。 - 我们可以将
this 关键字作为方法调用中的参数传递。 - 它可以消除实例/对象的构造函数或方法中的歧义或命名冲突。
- 它可以用于返回当前的类实例。
局部变量局部变量是在方法、构造函数或代码块中定义的。 它是在我们创建方法或构造函数时创建的,并且它的作用域仅限于它们内部。 我们不能在方法、构造函数或代码块之外使用局部变量。 类变量类变量也称为静态成员变量,它使用 static 关键字声明。 它在类中声明,但在构造函数、方法或代码块之外。 所有实例共享一个类变量的副本,或者我们可以说类变量对于该类的所有实例都是通用的。 实例变量实例变量也称为非静态变量,它是不用 static 关键字声明的变量。 实例变量由对象指定。 这些变量可以使用该类的实例进行访问。 类变量和实例变量的区别以下是类变量和实例变量之间的区别 序号。 | 类变量 | 实例变量 |
---|
1. | 类变量使用 static 关键字在类中声明,但不在方法和构造函数中。 | 实例变量在类中声明,不使用 static 关键字。 | 2. | 可以使用类名访问类变量。 语法
ClassName.variableName | 可以使用该类的实例访问实例变量。 语法
ObjectRefernce.variableName | 3 | 类变量对于该类的所有实例都是通用的。 该类的所有实例共享一个静态变量的副本。 | 实例变量对于类的所有实例不是通用的。 特定类的每个对象将保留其自己的实例变量副本。 | 4 | 它们在程序启动时创建,并在程序终止时销毁。 | 实例变量在使用 new() 关键字创建特定类的对象时创建,并在对象销毁时销毁。 |
|