2013-10-29 43 views
0

我没有几个方法可以接受固定大小的集合(例如2,3,5)。我不能决定哪种方式更好:传递几个元素到方法

public void Foo(IEnumerable<Object> objects) 
{ 
    if(objects.Count() != 3) 
    { 
     throw new Exception() 
    } 
    // actions 
} 

public void Foo(Object objectA, Object objectB, Object objectC) 
{ 
    // actions 
} 

是否有任何最终+ \ - 每个选项?

回答

7

第二,在我看来好得多:

  • 这是从签名,它的预计3个值
  • 故障是在编译时,而不是执行时间
+0

虽然第一种方法可以更灵活 – lordkain

+1

@lordkain所需的集合成员的数量,不那么灵活,因为你承担一个异常ISN”在调用该方法时突出显示。这是更危险的,这是误导,因为“灵活性”是一个误导 –

2

标记明显如果有特定数量的成员是必需的,请使用第二个选项。如果允许一个集合,但是在运行时抛出一个异常,那么你的方法的使用者会感到困惑。如果没有使用适当的测试并且误导,这可能会或可能不会被捕获。总是为将要使用你的代码的人设计,永远不要假设你将永远是维护它的人。

1

我会去这样的:

public class Bar 
{ 
    public Object object1; 
    public Object object2; 
    public Object object3; 

    // add a constructor if you want 
} 

... 

public void Foo(Bar b) 
{ 
     // actions 
} 
相关问题