繁体   English   中英

c#对象实例化

[英]c# object instantiation

有什么区别:

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

new Object().foo();

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

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

执行方面没有区别。

调试方面可能有所不同:

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

我绝对不是说你应该总是将所有内容分开 - 只是它可以用于调试目的。

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

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

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

没有不同。

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

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

编辑:删除了错误的代码

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM