传递新对象或对象引用
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});
一样,没区别
我猜你会想用你的开发团队喜欢的方式来做。
两者相同..
如果您想在将任何 property
或 member
传递给函数之前分配它,那么您可以使用 1
来保持代码整洁。但是,您也可以通过@prospector 建议的方法来做同样的事情。
如果
确实会有所不同
TestDatabaseContext db = new TestDatabaseContext();
与
不在同一个代码块(方法)中
testObject = new TestObject(db);
对于 1,您将再次使用相同的 db
实例(例如,如果它在构造函数中设置并且您在方法中设置了 testObject
变量),对于 2,每次您设置 testObject
,将使用 TestDatabaseContext
的新实例。
是否要重用 db
实例取决于您,如果这两行在同一 method/constructor/... =17=]
在 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});
一样,没区别
我猜你会想用你的开发团队喜欢的方式来做。
两者相同..
如果您想在将任何 property
或 member
传递给函数之前分配它,那么您可以使用 1
来保持代码整洁。但是,您也可以通过@prospector 建议的方法来做同样的事情。
如果
确实会有所不同TestDatabaseContext db = new TestDatabaseContext();
与
不在同一个代码块(方法)中testObject = new TestObject(db);
对于 1,您将再次使用相同的 db
实例(例如,如果它在构造函数中设置并且您在方法中设置了 testObject
变量),对于 2,每次您设置 testObject
,将使用 TestDatabaseContext
的新实例。
是否要重用 db
实例取决于您,如果这两行在同一 method/constructor/... =17=]