.net - 在调用方法的同一行实例化一个类是不好的做法吗?

标签 .net memory-management garbage-collection

如果我只需要实例化一个类来调用它的单个方法然后完成它,我喜欢像这样在一行中完成它,

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/

相关文章:

c# - 生成随机唯一代码

performance - JavaFX:List 与 ObservableList 性能/内存使用情况

objective-c - 为什么我的字典在 NSArray 中发布?

c# - 为什么创建新数组会抛出 OutOfMemoryException?

c# - 在 C#.NET 中实现不固定多维数组的最佳方法是什么?

.net - Windows 窗体的进度按钮

c# - .NET 中的内存分配

java - G1启动并发标记周期时年轻GC时间较长

.NET ClickOnce 没有安装必备文件?

Java - 静态数组列表中对象的垃圾数组列表字段