方法:什么是更好的List或对象?

时间:2010-10-18 09:21:06

标签: c# methods

在我编程时,我提出了这个问题,

更好的是,让方法接受单个实体或这些实体的列表?

例如,我需要一个字符串列表。我可以有:

  • 接受List并返回带有结果的字符串List的方法。

    List<string> results = methodwithlist(List[objects]); 
    

  • 接受对象并返回字符串的方法。然后在循环中使用此函数,从而填充列表。

    for int i = 0; i < List<objects>.Count;i++;)
    {
       results = methodwithsingleobject(List<objects>[i]);
    }
    

**这只是一个例子。我需要知道哪一个更好,或更多使用,为什么。

谢谢!

3 个答案:

答案 0 :(得分:7)

好吧,当你获得第二个表单时很容易构建第一个表单 - 但是使用LINQ,一旦你有了预测,你真的不需要编写自己的表单。例如,您可以写:

List<string> results = objectList.Select(X => MethodWithSingleObject()).ToList();

通常,编写和测试仅处理单个值的方法更容易,除非实际需要知道集合中的其余值(例如,查找聚合)。

答案 1 :(得分:2)

我会选择第二个,因为当你有一个字符串时它更容易使用(即它更通用)。此外,方法本身的责任更加明确,因为如果方法的目的只是修改字符串,该方法不应与列表有任何关系。

此外,您可以使用Linq简化呼叫:

result = yourList.Select(p => methodwithsingleobject(p));

答案 2 :(得分:1)

在学习任何语言时,这个问题出现了很多,答案有点没有实际意义,因为标准编码实践是依靠LINQ在运行时为您优化代码。但这假设你正在使用支持它的语言版本。但是,如果您确实想对此进行一些研究,那么有一些Stack Overflow文章深入探讨了这一点并且还提供了外部资源来审核:

  1. In .NET, which loop runs faster, 'for' or 'foreach'?
  2. C#, For Loops, and speed test... Exact same loop faster second time around?
  3. 我所学到的不是过分依赖Count并且在类型集合上使用长度,因为它可以快得多。

    希望这有用。