2 つの値を保持するカスタム リストを作成しようとしています。
たとえば、私は列挙型を持っています:
public enum Type
{
name,
number,
surname
}
だから私がしたいのは、上記の列挙型、タイプ、およびそれに付随する値を保持するリストを持つことです。
例えば:
List<Type type, object value>
これを達成する方法を教えてください。
この猫の皮を剥ぐ方法はたくさんあります。
このリストを単一のメソッド内でのみ使用する必要がある場合は、List<Tuple<Type,object>>
. Tuple
MSDNを参照してください。
メソッド/クラス間でリストを共有する必要がある場合は、両方の値を保持するカスタム型をお勧めします。
public class MyValues
{
public Type TheType { get; set; }
public object TheObject { get; set; }
}
そして、それを で使用しList<MyValues>
ます。
注:object
をジェネリック型として使用するのはコードの匂いです。ジェネリックを使用する理由を無効にします。
一般的な KeyValuePair またはタプルを含む一般的なリストを作成できます。
List<KeyValuePair<Type, object>> myList = new List<KeyValuePair<Type, object>>();
List<Tuple<Type, object>> myList = new List<Tuple<Type, object>>();
これは、問題の簡単な解決策かもしれません。
タイプがコレクション内で一意になる場合は、辞書を使用できます。
Dictionary<Type,object>
Type が一意にならない場合は、Tuple を使用できます。
List<Tuple<Type,object>>
または、@oded が提案したように、独自のクラスを作成して、クラスのタイプのリストを作成することもできます。
List<MyValues>