0

2 つの値を保持するカスタム リストを作成しようとしています。

たとえば、私は列挙型を持っています:

public enum Type
{
   name,
   number,
   surname
}

だから私がしたいのは、上記の列挙型、タイプ、およびそれに付随する値を保持するリストを持つことです。

例えば:

List<Type type, object value>

これを達成する方法を教えてください。

4

3 に答える 3

4

この猫の皮を剥ぐ方法はたくさんあります。

このリストを単一のメソッド内でのみ使用する必要がある場合は、List<Tuple<Type,object>>. TupleMSDNを参照してください。

メソッド/クラス間でリストを共有する必要がある場合は、両方の値を保持するカスタム型をお勧めします。

public class MyValues
{
  public Type TheType { get; set; }
  public object TheObject { get; set; }
}

そして、それを で使用しList<MyValues>ます。

注:objectをジェネリック型として使用するのはコードの匂いです。ジェネリックを使用する理由を無効にします。

于 2012-12-05T09:57:12.767 に答える
2

一般的な KeyValuePair またはタプルを含む一般的なリストを作成できます。

List<KeyValuePair<Type, object>> myList = new List<KeyValuePair<Type, object>>();

List<Tuple<Type, object>> myList = new List<Tuple<Type, object>>();

これは、問題の簡単な解決策かもしれません。

于 2012-12-05T09:57:52.377 に答える
0

タイプがコレクション内で一意になる場合は、辞書を使用できます。

 Dictionary<Type,object>

Type が一意にならない場合は、Tuple を使用できます。

 List<Tuple<Type,object>>

または、@oded が提案したように、独自のクラスを作成して、クラスのタイプのリストを作成することもできます。

 List<MyValues>
于 2012-12-05T09:59:19.517 に答える