dra*_*fly 2 .net c# collections c#-4.0
我在一个类(我们称之为MyClass)中发现了一些非常讨厌的代码,这些代码广泛使用了T.Add/Remove方法.同一个类也将该集合公开为具有T类型的IList的属性,因此更改类型将涉及一些重构.
此外,MyClass集合用作事件侦听器对象的容器,因此客户端代码只是订阅(将自身添加到集合)和取消订阅(从集合中删除).订单无关紧要,无论是列表的开始/中间/结尾.
为了提高性能,我想替换内部实现细节,替换List of T ....我不知道是什么.我尝试了T的LinkedList,但它没有实现T的IList.我在MSDN看了T的IList,但是没有实现IList的类列表,所以我可以比较文档.
另一件事是我试图将T的IList更改为ICollection of T,这可能是一个解决方案(因为MyClass的客户端代码使用Add/Remove方法,所以不需要重构)但有趣的事情发生了:
LinkedList<string> list = new LinkedList<string>();
list.Add("test");
Run Code Online (Sandbox Code Playgroud)
我收到错误时,此代码无法编译:
'System.Collections.Generic.LinkedList'不包含'添加'的定义,也没有扩展方法'添加'
但当我把它改为:
ICollection<string> list = new LinkedList<string>();
list.Add("test");
Run Code Online (Sandbox Code Playgroud)
然后我工作了.你能解释一下为什么第一个样本没有编译+告诉你在添加/删除项目方面最快的.NET Framework中的Tist实现是什么?
谢谢.