使用以下代码初始化对象之间有什么区别?

时间:2019-06-25 15:05:20

标签: c# .net

不了解定义方法,以下是代码

Person p = new person();
p = CreatePersonModel();

CreatePersonModel()在其中创建人物模型。

但是如果我想使用

重写它
Person p = CreatePersonModel();

它也工作正常。那么第一种和第二种方法的区别是什么。

2 个答案:

答案 0 :(得分:0)

在第一种方法中,您将创建一个新的person对象并将其分配给p。然后,您将取消引用新创建的对象,并将p分配给CreatePersonModel()所做的事情。

第二种方法是将p直接分配给返回的CreatePersonModel()

第二种方法可以避免创建立即丢弃的对象,因此通常首选第二种方法。

如果Person对象稍微复杂一些,并且可能需要其他资源,则第一种方法还可能遇到其他问题。这会使您的应用程序需要更多的时间和/或资源,而一无所获。

答案 1 :(得分:0)

第一个代码段创建了两个对象。称new时的一个:

Person p = new person();

另一个是将CreatePersonModel()的结果分配给p时。

p = CreatePersonModel();

原始值丢失,将被垃圾回收。这很浪费,应该避免。

第二个片段仅创建一个对象:

Person p = CreatePersonModel();

使用类型推断的等效项是:

var p = CreatePersonModel();