我正在使用旧的.NET 2.0框架在.NET中开发一个项目(由于很难更新许多客户端,验证要在许多计算机上安装的更新版本的框架等等)。 / p>
我已经看到大多数集合类都来自.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框架,因为这将带来更多的开发可能性,这个版本将带来许多改进。但我不确定我是否能够改变这一点。那么你会在我的位置做什么呢?
感谢您的阅读。 问候。
答案 0 :(得分:8)
我已经看到大多数集合类都来自.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及更高版本的一些语言功能。
答案 1 :(得分: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();
}
// ...
}
答案 2 :(得分:0)
您应该查看Wintellect's Power Collections for .NET
,http://powercollections.codeplex.com/
它是.net 4的替代品,但它几乎没有非常方便的收藏品。