鉴于以下设置和代码段,您可以提出使用其中一个的原因是什么?我使用其中任何一个都有几个论点,但我很好奇其他人的想法。
设置
public class Foo
{
public void Bar()
{
}
}
Snippet One
var foo = new Foo();
foo.Bar();
Snippet Two
new Foo().Bar();
答案 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