【问题标题】:Methods: What is better List or object?方法:List 和 object 哪个更好?
【发布时间】:2010-10-18 09:21:05
【问题描述】:

我在编程的时候想到了这个问题,

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

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

  • 一个接受列表并返回结果的字符串列表的方法。

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

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

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

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

谢谢!

【问题讨论】:

  • 我是一个 java/scala 人,但我相信你可以更好地使用列表理解 (linq ?)
  • 看这里的5.1.4,一定给你一个'功能'的方式:docs.python.org/tutorial/datastructures.html
  • 在您的第二个示例中,我猜您的意思是 results.add(methodwithsingleobject(List[i])) 因为您的版本将替换 for 循环内每次迭代的结果。

标签: c# methods


【解决方案1】:

嗯,当你有第二个表单时,很容易构建第一个表单 - 但是使用 LINQ,一旦你得到了投影,你真的不需要编写自己的表单。例如,你可以这样写:

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

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

【讨论】:

    【解决方案2】:

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

    另外,您可以使用 Linq 简化调用:

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

    【讨论】:

      【解决方案3】:

      在学习任何语言时都会经常出现这个问题,但由于标准的编码实践是在运行时依赖 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?

      不过,我学到的是不要过分依赖 Count 并在类型化的 Collections 上使用 Length,因为这样会快很多。

      希望这有帮助。

      【讨论】:

        猜你喜欢
        • 2011-08-13
        • 2020-10-09
        • 1970-01-01
        • 1970-01-01
        • 2022-07-11
        • 1970-01-01
        • 2012-06-04
        相关资源
        最近更新 更多