如果我只需要实例化一个类来调用它的单个方法然后完成它,我喜欢像这样在一行中完成它,
string result = new MyClass().GetResult();
而不是做类似的事情,
var myClass = new MyClass();
string result = myClass.GetResult();
我的理解是,在内存分配和后续清理方面,幕后正在发生同样的事情。这是真的还是有区别?如果是这样,一种比另一种更有效吗?
编辑:
正如你们许多人所建议的那样,使方法静态化是一个很好的解决方案。我正在使用其他人创建的类,但我目前无法重构或更改该类。那么对于这种情况,inline 实例化还是单独的一行实例化有什么区别呢?
编辑:
这个问题的答案是否因类(class)维护的资源数量而异(来自以下 Blam 和 BenCr 的评论)?
最佳答案
使用 one-liner 实际上应该更有效,因为运行时有一个较少的局部变量来跟踪以进行垃圾收集。 编辑:不正确,请参阅下面亚当的回复。我原来的观点仍然成立,强硬,影响(如果有的话)应该可以忽略不计。
但真正的问题是:为什么 GetResult() 不是静态函数?这将完全避免整个实例化。
关于.net - 在调用方法的同一行实例化一个类是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13727404/