List <string>和已定义的StringList </string>之间的区别

时间:2013-05-13 11:38:10

标签: c# .net

返回List<String>或返回StringList之间的效果有何不同?其中StringList将被定义为

class StringList : List<String> { }

这也会计入任何其他定义的列表,例如IntListObjectListControlListMyCustomClassList,所有这些列表都以类似的方式定义。

我看到的唯一区别是代码中的可读性,编译器是否会优化任何性能差异?

其次,有没有更好的方法来定义StringList,或者这是唯一的方法吗?

3 个答案:

答案 0 :(得分:5)

您是否要扩展List<string>的功能,即添加方法,覆盖方法?如果没有,就没有必要添加这个新类。

我不确定可读性 - 如果有人看到List<string>他确信这是字符串的通用列表,他知道会发生什么。但他无法确定StringList类的功能,他必须深入研究源代码,这意味着当源代码不可用时使用Reflector或此类工具。

答案 1 :(得分:3)

在你的情况下,性能应该没有更大的差异。

定义StringList的更好方法是

using StringList = System.Collections.Generic.List<string>;

因为它更清楚地表明您不想添加该定义。 如果你想扩展一些东西,那么使用class / using继承是一种好方法。

但是,我仍然建议使用List<string>,因为每个C#程序员都会知道它是什么。为每种可能的数据类型定制自定义都会使代码难以阅读。

答案 2 :(得分:0)

当您尝试实现某个自定义类的通用List以实现添加新功能和覆盖某些常用功能时,它才会出现。但我建议实施IList<>而不是List<>。创建实现String列表的新类不会出现。