我正在使用旧的.NET 2.0框架在.NET中开发一个项目(由于很难更新许多客户端,验证要在许多计算机上安装的更新版本的框架等等).
我已经看到大多数集合类都来自.NET 4框架.如果我需要集合和地图,你会建议使用什么,但我需要使用.NET 2.0框架?我应该从头开始实现我想要使用的每个系列吗?
除了我不知道的System.Collections.Generic命名空间之外还有更多的集合吗?(参考这里:
http://msdn.microsoft.com/en-us/library/system.collections.generic%28v=vs.80%29.aspx)
我想最好的决定是说服必要的人将所有客户端更新到4.5 .NET框架,因为这将带来更多的开发可能性,这个版本将带来许多改进.但我不确定我是否能够改变这一点.那么你会在我的位置做什么?
谢谢你的阅读.问候.
我已经看到大多数集合类都来自.NET 4框架.
这根本不是真的.该System.Collections.Concurrent命名空间诞生于.NET 4中的发挥,但大多数的通用集合抵达.NET 2.
.NET 3.5只有一些新的 - 我怀疑最重要的是HashSet<T>.
最常用的集合(除了数组)可能是:
List<T>Dictionary<TKey, TValue>LinkedList<T>Queue<T>Stack<T>......与前两种方式比过去三年更广泛的应用.所有这些都在.NET 2中.
要注意的另一个重要区别是LINQ:.NET 3.5引入了LINQ,但是你可以使用LINQ to Objects(例如LINQBridge)对.NET 2.0 的替代实现.如果您拥有Visual Studio的现代版本,那么即使您使用.NET 2 ,也可以使用C#3及更高版本的某些语言功能.
List<T>并且Dictionary<TKey, TValue>在 .NET 2.0 中可用。与大多数其他通用集合一样。而不是HashSet<T>您可以使用通用字典。你也不需要从头开始实现它。您可以将大部分功能委托给字典。例如
public class HashSet<T> : IEnumerable<T>
{
private Dictionary<T, object> _dictionary = new Dictionary<T, object>();
public void Add(T value)
{
if (!_dictionary.ContainsKey(value))
_dictionary.Add(value, null);
}
public void Remove(T value)
{
_dictionary.Remove(value);
}
public void Clear()
{
_dictionary.Clear();
}
public int Count
{
get { return _dictionary.Count; }
}
public IEnumerator<T> GetEnumerator()
{
return _dictionary.Keys.GetEnumerator();
}
// ...
}
Run Code Online (Sandbox Code Playgroud)