是否有理由不使用一次性对象而不是显式声明的对象

时间:2011-09-16 08:25:57

标签: .net object

最近我花了很多时间确保我的物品都有名字,可以轻松识别它们的含义。我还发现你可以像这样一次性使用对象:

_ProfileList = (New RegistryManager).GetAllProfiles()

与创建命名对象相反。

当你想要的只是一次访问某个对象时,有没有理由不这样做?如果有人知道专业和缺点会很棒。

PS:这是VB.NET代码,但如果提供示例

,它或C#都可以

2 个答案:

答案 0 :(得分:1)

对象没有名称 - 变量有。

创建一个对象并仅在另一个表达式中使用它是绝对正常的 - 尽管我认为像RegistryManager这样的东西听起来应该是传入的依赖,并且不是像这样在代码中创建的东西。它会使测试更难。

更好的例子是StringBuilder

string text = new StringBuilder().Append("Foo")
                                 .Append(name)
                                 .DoOtherAppending()
                                 .ToString();

答案 1 :(得分:1)

显式 - 它只是没有存储在变量中(实际上,对象 从不具有“名称” - 仅局部变量/字段有名称)。如果您不需要多次使用该对象,并且它不会使核心更复杂,那么这并没有真正的缺点。请注意,如果对象为IDisposable或类似,则需要本地,即

using(var manager = new RegistryManager()) {
     _ProfileList = manager.GetAllProfiles();
}

但除此之外,它并不关心。实际上,如果您执行分配给本地并立即使用它,我希望任何“发布”版本都能完全删除变量无论如何,这意味着一次编译(在发布中)

var manager = new RegistryManager();
_ProfileList = manager .GetAllProfiles();

_ProfileList = (new RegistryManager()).GetAllProfiles();

是相同的(我的期望)。