[英]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 .NET
, http://powercollections.codeplex.com/
它是.net 4的替代品,但集合很少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.