1

次のように表すことができるデータ構造をC#2.0で実装しようとしています。

  | field1 | field2 | field3 | ... (variable length) ...
  +--------+--------+--------+-------------------
1 | int0   | float0 | bool0  | ...
2 | int1   | float1 | bool1  | ...
. |
. |
. |
(variable) ...

現在、私は本当に基本的なことを考えています:

public class DataStructure {
    string name;
    List<string> fieldNames;
    List<Item> items;
}

public class Item {
    List<object> values;
}

次に、取得する型を暗黙的に定義するメソッド(つまりbool GetBool (string field)int GetInteger (string field))を使用してアクセスできるため、組み込み型とカスタムクラスの小さなセット(例CustomBaseObject)を使用して作業します。

これを行う既存のデータ構造の実装はありますか?これは、私がここで提示している問題を解決するための別の(より良い)アプローチですか?(アクセスと変更操作の複雑さを考慮に入れる)

List<object> valuesまた、のようにキャストする以外に何かがある場合、ボクシング/ボックス解除の最良の方法はわかりません(type)values[index]

4

1 に答える 1

1

C#4.0では、を使用してこれらの種類の構造の適切な実装を取得できます。これにより、キーワードを使用ExpandoObjectした開発エクスペリエンスが向上します。良いイントロについては、 http dynamic//msdn.microsoft.com/en-us/magazine/ff796227.aspxを参照してください。

C#2.0では、を実装するオブジェクトで同様の動作を得ることができますIExpandoIExpandoとは何ですか?どこで使用されていますか?を参照してください。詳細については。

そのルートに進まないことを選択した場合は、内部実装を2つのリストからに切り替えることをお勧めします。IDictionary<String, Object>これは、実装が簡単で、フィールドが追加されるとパフォーマンスの面でデュアルリストの実装をすばやく追い抜くためです。

于 2013-03-26T15:56:02.480 に答える