2

残念ながら、古い.NET 2.0フレームワークを使用して.NETでプロジェクトを開発しています(多くのクライアントを更新するのが難しいため、新しいバージョンのフレームワークを検証して多くのコンピューターにインストールするなど)。

コレクションクラスの大部分は.NET4フレームワークからのものであることがわかりました。セットとマップが必要であるが、.NET 2.0フレームワークを使用する必要がある場合は、何を使用することをお勧めしますか?使用したいすべてのコレクションを最初から実装する必要がありますか?

System.Collections.Generic名前空間以外に、私が知らないコレクションは他にもありますか?(ここで参照:

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

すべてのクライアントを4.5.NETFrameworkに更新するように必要な人を説得するのが最善の決定だと思います。これにより、開発の可能性が高まり、このバージョンでは多くの改善がもたらされるからです。しかし、これを変更できるかどうかはわかりません。それで、あなたは私の立場で何をしますか?

読んでくれてありがとう。よろしく。

4

3 に答える 3

8

コレクション クラスの大部分が .NET 4 フレームワークからのものであることがわかりました。

それは単に真実ではありません。名前System.Collections.Concurrent空間は .NET 4 で登場しましたが、ジェネリック コレクションのほとんどは .NET 2 で導入されました。

.NET 3.5 にはいくつかの新しいものしかありませんでした。最も重要なものは .NET だと思いHashSet<T>ます。

最も一般的に使用されるコレクション (配列を除く) は、おそらく次のとおりです。

  • List<T>
  • Dictionary<TKey, TValue>
  • LinkedList<T>
  • Queue<T>
  • Stack<T>

...最初の 2 つは、最後の 3 つよりもはるかに広く使用されていますこれらはすべて .NET 2 にありました。

注意すべきその他の重要な違いは LINQ です。.NET 3.5 で LINQ が導入されましたが、.NET 2.0 に対してLINQ to Objects (例: LINQBridge )の代替実装を使用できます。これは、最新バージョンの Visual Studio を使用している場合にうまく機能し、.NET 2 をターゲットにしている場合でも、C# 3 以降の一部の言語機能を使用できます。

于 2013-02-06T16:06:22.133 に答える
5

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();
    }

    // ...
}
于 2013-02-06T16:02:00.077 に答える
0

http://powercollections.codeplex.com/Wintellect's Power Collections for .NETをご覧ください。

これは .net 4 の代替ですが、非常に便利なコレクションはほとんどありません。

于 2013-03-04T15:56:16.807 に答える