基本的にルックアップテーブルである大きな静的リストがあるので、コードでテーブルを初期化します。
private class MyClass
{
private class LookupItem
{
public int Param1 { get; set; }
public int Param2 { get; set; }
public float Param2 { get; set; }
public float Param4 { get; set; }
}
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
new LookupItem() { Param1 = 1, Param2 = 2, Param3 = 3 Param4 = 4 },
new LookupItem() { Param1 = 5, Param2 = 6, Param3 = 7 Param4 = 8 },
//etc
}
}
実数LookupItem
にはさらに多くのプロパティがあるため、よりコンパクトな初期化形式を可能にするコンストラクターを追加しました。
private class MyClass
{
private class LookupItem
{
public int Param1 { get; set; }
public int Param2 { get; set; }
public float Param2 { get; set; }
public float Param4 { get; set; }
public LookupItem(int param1, int param2, float param3, float param4)
{
Param1 = param1;
Param2 = param2;
Param3 = param3;
Param4 = param4;
}
}
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
new LookupItem(1, 2, 3, 4),
new LookupItem(5, 6, 7, 8),
//etc
}
}
私が本当にやりたいのは、オブジェクト自体にコレクションイニシャライザー形式を使用して、new LookupItem()
すべての行を削除できるようにすることです。例えば:
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
//etc
}
これは可能ですか?KeyValuePair
このようにaの'をDictionary<>
初期化できるからだと思います。
MSDNの状態:
コレクション初期化子を使用すると、 IEnumerableを実装するコレクションクラスを初期化するときに、1つ以上の要素初期化子を指定できます。要素の初期化子は、単純な値、式、またはオブジェクトの初期化子にすることができます。コレクション初期化子を使用することにより、ソースコードでクラスのAddメソッドへの複数の呼び出しを指定する必要はありません。コンパイラーは呼び出しを追加します。
これは、クラスに実装IEnumerable
して各パラメーターを返す必要があることを意味しますか?LookupItem
私のクラスはコレクションクラスではありません。