有什么区别:
Object o = new Object();
o.foo();
和
new Object().foo();
(假设我之后不需要参考)?
是否有任何理由使用一个而不是另一个(例如内存使用)?
答案 0 :(得分:8)
执行方面没有区别。
可以在调试方面有所不同:
foo()
之前打破NullReferenceException
来说,如果在同一语句中有多个解除引用操作,则可能会很棘手。)我肯定不说你应该总是将所有内容拆分 - 只是它可以对调试有用。
答案 1 :(得分:6)
如果之后不需要实例,则没有区别。
答案 2 :(得分:2)
如果您不需要o
个词,那么没有区别
(JIT)编译器可能会将它们视为相同。
所以这是一个品味问题。在这种情况下,我略微偏爱第一个,但有时第二个样本的流畅表示法更具可读性。
答案 3 :(得分:0)
没有区别。
要探测它,你可以编译两个代码(发布模式),用ildasm检查它们,你会看到结果字节码是相同的。
编辑:实际上,我有时会发现在声明变量时更容易调试。更容易检查,因此更容易调试。
答案 4 :(得分:-1)
编辑:删除了错误的代码
不同之处在于,在第一种情况下,您可以看到在调试器中创建的对象。