簡體   English   中英

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

[英]Alternative for collections in .NET Framework 2.0

不幸的是,我正在使用舊的.NET 2.0框架在.NET中開發一個項目(由於難以更新許多客戶端,驗證要在許多計算機上安裝的框架的較新版本等)。

我已經看到大多數集合類都來自.NET 4框架。 如果我需要Sets and Maps但需要使用.NET 2.0框架,您會建議使用什么? 我應該從頭開始實現我想使用的每個集合嗎?

除了System.Collections.Generic命名空間外,還有其他我不知道的集合嗎? (參考此處:

http://msdn.microsoft.com/zh-cn/library/system.collections.generic%28v=vs.80%29.aspx

我認為最好的決定是說服必要的人員將所有客戶端更新為4.5 .NET Framework,因為這將帶來更多的開發可能性,並且此版本將帶來許多改進。 但是我不確定是否可以更改此設置。 那你在我的職位上會做什么?

感謝您的閱讀。 問候。

我已經看到大多數集合類都來自.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,但是您可以針對.NET 2.0使用LINQ到對象的替代實現(例如LINQBridge )。 如果您擁有現代版本的Visual Studio,這將很好地工作,即使您以.NET 2為目標,也可以使用C#3和更高版本的某些語言功能。

.NET 2.0中提供了List<T>Dictionary<TKey, TValue> 像大多數其他通用集合一樣。 代替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();
    }

    // ...
}

您應該看看Wintellect's Power Collections for .NEThttp://powercollections.codeplex.com/

它是.net 4的替代品,但集合很少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM