返回List<String>
或返回StringList
之间的效果有何不同?其中StringList将被定义为
class StringList : List<String> { }
这也会计入任何其他定义的列表,例如IntList
或ObjectList
或ControlList
或MyCustomClassList
,所有这些列表都以类似的方式定义。
我看到的唯一区别是代码中的可读性,编译器是否会优化任何性能差异?
其次,有没有更好的方法来定义StringList,或者这是唯一的方法吗?
答案 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列表的新类不会出现。