在C#</string>中何处使用string [] vs list <string>

时间:2011-01-18 13:50:00

标签: c# .net c#-4.0

String[]相比,

list<string>重量轻。因此,如果我不需要操纵我的收藏,我应该使用string[]还是总是建议去list<string>

如果是list<string>,我们是否需要执行空检查或不需要?

6 个答案:

答案 0 :(得分:37)

当您需要使用静态数组时使用string[]:您不需要添加和删除元素 - &gt;仅按索引访问元素。如果您需要修改集合,请使用List<string>。如果您打算只遍历内容并且永远不会通过索引访问IEnumerable<string>

答案 1 :(得分:8)

如果不应修改集合,请使用字符串[]或更好,IEnumerable<string>。这表明字符串集合应被视为只读字符串集合。

在API中使用IEnumerable<string>也可以在不破坏客户端代码的情况下更改底层实现。您可以轻松地使用字符串数组作为底层实现,并将其公开为IEnumerable<string>。如果稍后阶段的实现更适合使用列表或其他结构,只要它支持IEnumerable<string>,您就可以更改它。

答案 2 :(得分:4)

我说你自己总结得很好。

如果列表的大小不会改变,并且您不需要任何高级List函数(如排序),那么String []更可取,因为正如您所说的那样,它是轻量级的。

但是考虑潜在的未来需求 - 你有可能有一天想要使用List吗?如果是这样,请考虑立即使用List。

您需要在String []和List中检查null。两种类型都可以具有空值。

答案 3 :(得分:2)

我想说这取决于你想要完成的事情。但是,一般来说,我认为你可以访问一个很棒的框架,为你做了很多艰苦的工作,所以使用它(即使用List&lt;&gt;而不是数组)。

看一下像List&lt;&gt;这样的课程为您提供的会员你会明白我的意思:除了不必担心数组容量和索引越界异常之外,List和其他ICollection / IList类为你提供了添加,删除,清除,插入,查找等方法这是无限的帮助。我也相信

myList.Add (myWidg);

更好阅读和维护
myArr [i] = myWidg;

答案 4 :(得分:1)

这真的取决于具体情况。任何真正与性能相关的东西都应该用数组完成。其他任何东西都会与列表一起使用。

答案 5 :(得分:1)

我肯定会投票给List。除了列表支持的各种成员函数之外,它还提供了“无元素”概念。可以有一个没有元素的列表,但不能有没有元素的数组。因此,如果我们遵循不从函数返回null的最佳实践,那么我们可以安全地检查元素的计数而不进行空检查。在数组的情况下,我们必须检查null。而且,我很少使用循环来搜索数组或列表中的元素。 LINQ只是使它整洁,我们可以使用List而不是数组。必须将数组转换为列表才能使用LINQ。