Flutter 省道+;颤振新对象创建
在dart中,我可以通过两种方式创建对象和调用方法: 第一个:Flutter 省道+;颤振新对象创建,flutter,dart,Flutter,Dart,在dart中,我可以通过两种方式创建对象和调用方法: 第一个: ClassA a = new ClassA(); a.methodA(); 第二个: new classA().methodA(); 继续这样做有什么负面影响吗?假设我想从另一个类中的ClassA调用4-5个方法,使用第二种方法会对性能产生任何负面影响吗?这仍然是完全相同的对象创建过程,只是一个简单的构造函数调用。唯一的区别是,在一种情况下,您为结果命名(a),而在另一种情况下,您没有 这不像是通过不将对象保存到变量来节省内存。
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
语句?”它们完全不同。如果没有一个更具体的例子来说明你在处理什么类,以及它的方法做什么,那么就只能推荐其中一个了。