在调用方法之前将对象存储在变量中是否有好处?

Rya*_*ohn 5 c# constructor instantiation method-chaining

例1:

SomeObject someObject = new SomeObject();
if (someObject.Method())
{
    //do stuff
}
//someObject is never used again
Run Code Online (Sandbox Code Playgroud)

VS

例2:

if (new SomeObject().Method())
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

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

Ree*_*sey 12

至少有三个潜在的好处:

  1. 可读性:第一个在第一个示例中比第二个示例的语法更明显,尤其是对于较新的开发人员.

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

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