以下是“什么是”的区别:
Object o = new Object();
o.foo();
并且
new Object().foo();
假设之后我不需要引用,有没有使用其中一个而不是另一个的原因(例如内存使用)?
在执行方面没有区别。
在调试方面可能会有所不同:
foo()
之前中断可能很方便NullReferenceException
的情况,如果在同一语句中有多个取消引用操作,则可能会有些棘手)。我绝对不是说您应该始终将所有内容拆分 - 只是说它可能对调试目的有用。
o
,那么它们没有区别。没有差异。
要进行验证,你可以编译这两段代码(发布模式),使用 ildasm 进行检查,你会发现生成的字节码是相同的。
编辑:实际上,有时候当变量被声明时,我发现调试更加容易。更容易检查,因此更容易调试。
编辑:已删除错误代码
区别在于第一种情况下,您可以在调试器中看到正在创建的对象。
foo
方法的类进行转换,但感谢你的回答。 - user1112111