传递新对象或对象引用

Pass new object or object reference

在 C#(特别是 MVC 5)中,我应该只将新对象传递给构造函数还是传递对已创建对象的引用?

这是我指的代码:

1.

TestDatabaseContext db = new TestDatabaseContext();
testObject = new TestObject(db);

2.

testObject = new TestObject(new TestDatabaseContext());

以上两个代码示例是否达到相同的结果?我应该偏爱一种方法吗?

提前致谢。

完全没有区别。

1) 如果您需要在将数据库传递给 TestObject 之前向数据库添加一些属性,这很好。

2) 您可以使用 Object Initializer

执行我在#1 中提到的相同操作
testObject = new TestObject(new TestDatabaseContext{id=1, otherproperty=whatever});

一样,没区别

我猜你会想用你的开发团队喜欢的方式来做。

两者相同..

如果您想在将任何 propertymember 传递给函数之前分配它,那么您可以使用 1 来保持代码整洁。但是,您也可以通过@prospector 建议的方法来做同样的事情。

如果

确实会有所不同

TestDatabaseContext db = new TestDatabaseContext();

不在同一个代码块(方法)中

testObject = new TestObject(db);

对于 1,您将再次使用相同的 db 实例(例如,如果它在构造函数中设置并且您在方法中设置了 testObject 变量),对于 2,每次您设置 testObject,将使用 TestDatabaseContext 的新实例。

是否要重用 db 实例取决于您,如果这两行在同一 method/constructor/... =17=]