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() 关键字创建特定类的对象时创建,并在对象销毁时销毁。

下一个主题Dart static 关键字