保持对象引用

时间:2009-07-03 21:50:28

标签: c# coding-style

鉴于以下设置和代码段,您可以提出使用其中一个的原因是什么?我使用其中任何一个都有几个论点,但我很好奇其他人的想法。

设置

public class Foo
{
    public void Bar()
    {
    }
}

Snippet One

var foo = new Foo();
foo.Bar();

Snippet Two

new Foo().Bar();

5 个答案:

答案 0 :(得分:9)

第一个版本意味着您可以在调用foo之前更轻松地检查调试器中的Bar()

第一个版本还意味着您将一个名称与该对象相关联(当然它实际上是变量的名称,但显然存在心理关联),这有时很有用:

var customersWithBadDebt = (some big long expression)
customersWithBadDebt.HitWithBaseballBat();

更清晰
(some big long expression).HitWithBaseballBat();

如果这些原因都不适用,请随意选择单行版本。这是个人品味,然后应用于每个特定的背景。

答案 1 :(得分:3)

如果您不打算使用Foo实例而不仅仅是执行该调用,我可能会选择第二个,但我看不出应该有任何实际差异,除非调用经常发生(但这并不会让我觉得这种结构非常可能。)

答案 2 :(得分:0)

我赞成第二个,因为它很清楚我根本不需要对象引用。

答案 3 :(得分:0)

我会质疑你将此作为实例方法的动机。 如果我只是新建对象来调用它上面的一个方法并在之后丢弃它,那么一个带有类依赖关系作为参数的静态方法应该是可行的方法(虽然我鄙视静态)。

什么导致更有趣的问题:如果你根本不依赖于内部状态,那么你只是一个函数,因此我说你属于某个实体,而不是属于你自己的类。

答案 4 :(得分:0)

我会选择第一个小节。

如果你要上课Foo do Bar()那么Bar2()会更容易。

此外,它更易于调试,因为您可以观看foo,这是您无法使用代码段2