Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 省道+;颤振新对象创建_Flutter_Dart - Fatal编程技术网

Flutter 省道+;颤振新对象创建

Flutter 省道+;颤振新对象创建,flutter,dart,Flutter,Dart,在dart中,我可以通过两种方式创建对象和调用方法: 第一个: ClassA a = new ClassA(); a.methodA(); 第二个: new classA().methodA(); 继续这样做有什么负面影响吗?假设我想从另一个类中的ClassA调用4-5个方法,使用第二种方法会对性能产生任何负面影响吗?这仍然是完全相同的对象创建过程,只是一个简单的构造函数调用。唯一的区别是,在一种情况下,您为结果命名(a),而在另一种情况下,您没有 这不像是通过不将对象保存到变量来节省内存。

在dart中,我可以通过两种方式创建对象和调用方法:

第一个:

ClassA a = new ClassA();
a.methodA();
第二个:

new classA().methodA();

继续这样做有什么负面影响吗?假设我想从另一个类中的ClassA调用4-5个方法,使用第二种方法会对性能产生任何负面影响吗?

这仍然是完全相同的对象创建过程,只是一个简单的构造函数调用。唯一的区别是,在一种情况下,您为结果命名(
a
),而在另一种情况下,您没有

这不像是通过不将对象保存到变量来节省内存。在任何一种情况下,对新
ClassA
对象的引用都需要存在于某个地方(无论是否显式命名),否则
methodA
如何知道对哪个对象进行操作

但是,以下两者之间存在差异:

ClassA a = new ClassA()
a.methodA()
a.methodB()
a.methodC()
a.methodD()
a.methodE()

new ClassA().methodA()
new ClassA().methodB()
new ClassA().methodC()
new ClassA().methodD()
new ClassA().methodE()

在第一种情况下,将同一对象
a
(来自单个构造函数调用)重用为所有5个实例方法调用的目标。在后一种情况下,您有5个不同的对象(来自5个单独的构造函数调用),每个对象作为单个方法调用的目标。显然,它们的语义可能非常不同。

这就是我所说的您所展示的差异。当你说非常不同的语义时,你的意思是说做第二个是不好的,即新的ClassA().methodA()?@iaminpainpleasehelp1这只是一个完全不同的情况。假设所讨论的类是
计数器
,其对象以
count
0
开头,其
increment()
方法将计数增加1并返回新值<代码>新计数器。增量();new Counter.increment()创建两个短期计数器,每个计数器递增一次。两个表达式的计算结果均为
1
(由于增量,初始值为0,+1)。而
计数器c=新计数器;c、 增量();c、 increment()
使表达式返回
1
2
(初始计数为0,+1两次)。@iaminpainpleasehelp1两者都不是“更好”,它们的意思完全不同。抽象地说,就像这样,它们是完全不相容的。这就像问“什么更好,使用
for
循环,或者使用
if
语句?”它们完全不同。如果没有一个更具体的例子来说明你在处理什么类,以及它的方法做什么,那么就只能推荐其中一个了。