c#对象实例化

时间:2010-04-28 11:56:47

标签: c# object

有什么区别:

Object o = new Object();
o.foo();

new Object().foo();

(假设我之后不需要参考)?

是否有任何理由使用一个而不是另一个(例如内存使用)?

5 个答案:

答案 0 :(得分:8)

执行方面没有区别。

可以在调试方面有所不同:

  • 在创建对象之后但在调用foo()之前打破
  • 会很方便
  • 之后能够检查变量的值是很方便的
  • 如果抛出异常,将调用分成多行可以使源更清晰。 (我不认为在这种特殊情况下会出现问题,但对于NullReferenceException来说,如果在同一语句中有多个解除引用操作,则可能会很棘手。)

我肯定说你应该总是将所有内容拆分 - 只是它可以对调试有用。

答案 1 :(得分:6)

如果之后不需要实例,则没有区别。

答案 2 :(得分:2)

如果您不需要o个词,那么没有区别 (JIT)编译器可能会将它们视为相同。

所以这是一个品味问题。在这种情况下,我略微偏爱第一个,但有时第二个样本的流畅表示法更具可读性。

答案 3 :(得分:0)

没有区别。

要探测它,你可以编译两个代码(发布模式),用ildasm检查它们,你会看到结果字节码是相同的。

编辑:实际上,我有时会发现在声明变量时更容易调试。更容易检查,因此更容易调试。

答案 4 :(得分:-1)

编辑:删除了错误的代码

不同之处在于,在第一种情况下,您可以看到在调试器中创建的对象。