.NET Framework 2.0中集合的替代方法

时间:2013-02-06 16:00:11

标签: c# .net

我正在使用旧的.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框架,因为这将带来更多的开发可能性,这个版本将带来许多改进。但我不确定我是否能够改变这一点。那么你会在我的位置做什么呢?

感谢您的阅读。 问候。

3 个答案:

答案 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 .NEThttp://powercollections.codeplex.com/

它是.net 4的替代品,但它几乎没有非常方便的收藏品。

相关问题