1

Tuple.Create授業でよく使いますTuple。今私はで作成しKeyValuePairています:

new KeyValuePair<string, MyAnnoyingButNecessarilyVerboseClass>(myString, myObj)

この場合、型引数を含めたくありませんでした。これは、IMO のコードを少し難読化するためです。を模倣するTuple.Createために以下を追加しましたKeyValuePairs

public static class KVP
{
    public static KeyValuePair<TKey, TValue> Create<TKey, TValue>(TKey key, TValue value)
    {
        return new KeyValuePair<TKey, TValue>(key, value);
    }
}

だから私は書くことができます

KVP.Create(myString, myObj)

型引数は他の引数から推論されるため、明示的に含める必要はありません。これはうまく機能し、マイナス面は見られません。ですから、非常に関連する質問がいくつかあります。

  1. System.KeyValuePairC#に静的な create メソッドを持つ非ジェネリック クラスが含まれていないのはなぜですか? (「ほとんど価値のない機能に労力を投資したくなかったので、そうしませんでした」は完全に受け入れられ、理解できる答えです)
  2. 似たようなことをする機能がありませんか?
  3. KeyValuePair欠落しているクラスを作成することの欠点はありますか?
  4. ジェネリックを作成するためのより簡潔な方法はありますKeyValuePairか(クラスと関数名を明らかに短縮する以外に:))?
4

3 に答える 3

0

a non generic equivalent for

KeyValuePair<TKey, TValue>

is

System.Collections.DictionaryEntry 
于 2013-10-23T13:22:15.753 に答える
0

KeyValuePair は、C# のいくつかのバージョンで Tuple よりも前のものであるため、まったく存在しないと思います。Tuple を使用して、彼らは物事を行うためのより良い方法を見つけました。

于 2013-05-22T23:30:02.030 に答える