is new myObject().Load(); okay?

本文关键字:okay Load new is myObject | 更新日期: 2023-09-27 18:21:21

我可以这样做吗:

private someMethodSomewhere(){
    new myObject().Load();
}

取而代之的是:

private someMethodSomewhere(){
    myObject objectItem = new myObject().Load();
}

是同一件事吗


编辑:我不认为这需要澄清。。。但我想它确实:Load()确实返回myObject的实例。。。。否则它将无法编译。

is new myObject().Load(); okay?

以下等效:

private someMethodSomewhere(){
    new myObject().Load();
}

和:

private someMethodSomewhere(){
    myObject objectItem = new myObject();
    objectItem.Load();
}

除非Load方法返回myObject的实例,否则第二个代码段可能不会编译。

如果Load返回myObject的实例,则以下内容相同:

private someMethodSomewhere() {
    myObject objectItem = new myObject().Load();
}

当您在Release模式下编译时,编译器可能会对其进行优化,并删除未使用的objectItem变量,两者最终都会显示为:

private someMethodSomewhere() {
    new myObject().Load();
}

在最终IL中。

是!如果这正是你正在使用的代码,那么它也是一样的。

这是一样的,除非您不想在方法中使用objectitem。从功能的角度来看,没有任何区别。

编辑

第二种情况下的正确代码是

private someMethodSomewhere(){
    myObject objectItem = new myObject();
    objectItem.Load();
}

是的,但在第一个例子中,您没有将新对象分配给变量,也无法对其执行任何操作

private someMethodSomewhere(){
    myObject objectItem = new myObject();
    objectItem.Load();
}