Difference between List<String> and defined StringList
返回List或返回StringList在性能上有什么不同吗?其中,StringList将定义为
1
| class StringList : List<String> { } |
这也包括任何其他定义的列表,如IntList或ObjectList或ControlList或MyCustomClassList,均以类似方式定义。
我看到的唯一区别是代码的可读性,编译器是否会优化性能差异?
第二,有没有更好的方法来定义字符串列表,或者这是唯一的方法?
- stackoverflow.com/questions/5376203/&hellip;
- 你注意到任何性能影响了吗?我想不是。List清晰易读。不需要为每一位代码都有一个自定义类。
- 你也会和Int32List或DoubleList或DateTimeBooleanTupleList一起工作吗?对我来说,List或List或List>更容易阅读。
- 你能再解释一下吗?为什么您需要自己的list。如果您需要向继承者添加更多有用的功能,我建议您实现i list而不是list。
- 你所描述的将是完全相同的对象。这只会增加混乱。
是否要扩展List的功能,即添加方法、重写方法?如果没有,就没有必要添加这个新类。
我不确定可读性——如果有人看到List,他肯定这是字符串的通用列表,他知道会发生什么。但是他不能确定StringList类的作用,他必须深入到源代码中,这意味着在源代码不可用时使用反射镜或类似的工具。
- +我的想法很准确。List在所有使用它的C代码中都是非常简单和标准的。一看到StringList,我就想知道这到底是什么,为什么会不一样。
在您的案例中,性能应该没有更大的差异。
定义StringList的更好方法是
1
| using StringList = System.Collections.Generic.List<string>; |
因为它更清楚地表明,您不希望对该定义进行添加。如果您想扩展某些内容,那么创建一个class/使用继承是一个很好的方法。
但是,我仍然建议使用List,因为每个C程序员都知道它是什么。为每个可能的数据类型进行自定义定义会使代码不需要读取。
只有当您试图实现某个自定义类的通用列表以添加新功能并覆盖某些常见功能时,它才会起作用。但我建议实施IList<>,而不是List<>。生成实现字符串列表的新类不会产生sence。