关于C#:List 和定义的StringList之间的区别

Difference between List<String> and defined StringList

本问题已经有最佳答案,请猛点这里访问。

返回List或返回StringList在性能上有什么不同吗?其中,StringList将定义为

1
class StringList : List<String> { }

这也包括任何其他定义的列表,如IntListObjectListControlListMyCustomClassList,均以类似方式定义。

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

第二,有没有更好的方法来定义字符串列表,或者这是唯一的方法?


是否要扩展List的功能,即添加方法、重写方法?如果没有,就没有必要添加这个新类。

我不确定可读性——如果有人看到List,他肯定这是字符串的通用列表,他知道会发生什么。但是他不能确定StringList类的作用,他必须深入到源代码中,这意味着在源代码不可用时使用反射镜或类似的工具。


在您的案例中,性能应该没有更大的差异。

定义StringList的更好方法是

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

因为它更清楚地表明,您不希望对该定义进行添加。如果您想扩展某些内容,那么创建一个class/使用继承是一个很好的方法。

但是,我仍然建议使用List,因为每个C程序员都知道它是什么。为每个可能的数据类型进行自定义定义会使代码不需要读取。


只有当您试图实现某个自定义类的通用列表以添加新功能并覆盖某些常见功能时,它才会起作用。但我建议实施IList<>,而不是List<>。生成实现字符串列表的新类不会产生sence。