c# - 在调用方法之前将对象存储在变量中有好处吗?

标签 c# constructor instantiation method-chaining

示例 1:

SomeObject someObject = new SomeObject();
if (someObject.Method())
{
    //do stuff
}
//someObject is never used again

对比

示例 2:

if (new SomeObject().Method())
{
    //do stuff
}

使用第一种方法比使用第二种方法有什么好处,反之亦然?

最佳答案

至少有三个潜在的好处:

  1. 可读性:在许多情况下,第一个示例比第二个示例的语法更明显,尤其是对于新开发人员。

  2. 更好的调试体验:如果 SomeObject 的构造函数抛出异常,在第一种情况下,调试器将在该行中断。在第二种情况下,异常是在构造函数中还是在方法中并不明显。在对象上设置断点和检查值时会出现同样的问题 - 这在第二种情况下会很困难,并且需要在方法内部设置断点。

  3. 在第一种情况下,您可以在该单个调用之外使用该对象。如果您真的只需要一个方法用于单个调用,而不需要对象引用,那么静态方法可能更合适。

关于c# - 在调用方法之前将对象存储在变量中有好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3072960/

相关文章:

c# - 使用 UpdateProgress 的问题

c# - 如何使表单仅对应用程序最顶层?

Java URL 构造函数错误

javascript - Chrome是否保留每个对象的构造函数?

C#如何使用多个接口(interface)实现

c# - 更改 datagridview 单元格上的 system.byte() 值单击

c++ - 从 C++ 中的基类继承复制/移动构造函数作为构造函数

java - 为什么在某些情况下不需要对象实例化?

c++ - 检查类模板是否已实例化?

c# - 如何在 WPF 或 Winforms 应用程序中使用 System.ComponentModel.DataAnnotations