我有这两种方法来编写构造函数。className()和className._()
它们之间有什么区别,我什么时候应该使用哪个?
class GlobalState{
final Map<dynamic,dynamic> _data=<dynamic,dynamic>{};
static GlobalState instance = new GlobalState._();
GlobalState._();
}
//In Main Class
GlobalState _store=GlobalState.instance;
and
class GlobalState{
final Map<dynamic,dynamic> _data=<dynamic,dynamic>{};
static GlobalState instance = new GlobalState();
}
//In Main Class
GlobalState _store=GlobalState();
Run Code Online (Sandbox Code Playgroud)
jam*_*lin 16
例如:
class MyClass {
MyClass();
MyClass.named();
MyClass._private();
MyClass._();
}
Run Code Online (Sandbox Code Playgroud)
上面的类有四个构造函数:
MyClass():这是默认的未命名构造函数。当你设计这个类时,你会希望这表明它是人们大部分时间应该使用的构造函数。使用它更方便,因为它涉及的打字更少。MyClass.named(): 这是一个命名构造函数。也许你希望你的类有多个构造函数,这样你的类的实例可以用不同的方式构造。Dart 不支持重载函数,所以如果你想要多个构造函数,它们需要不同的名称。因此,如果您需要多个构造函数,则需要命名其中的一些构造函数以区分它们。即使您没有多个构造函数,您也可能需要一个明确的名称以避免歧义。MyClass._private(): 在 Dart 中,以下划线开头的名称是私有的(通常是文件名)。MyClass._private()只是一个命名构造函数,不能在定义它的源文件之外使用。通常,当类想要强制调用者使用公共工厂构造函数(或静态方法)来获取实例时,您会看到私有构造函数,特别是如果类想要有一个实例。MyClass._(): 这相当于MyClass._private()。它不是一个默认构造函数,它仍然是一个私有的、命名的构造函数(即调用者必须使用MyClass._()它来调用它)。在这种情况下,类作者想要一个私有构造函数但不想选择名称。(命名东西很难。)| 归档时间: |
|
| 查看次数: |
765 次 |
| 最近记录: |