2009-03-03 9 views
0

C#では、構造体を使ってArrayListを作成しました。多次元配列リストを作成します。arraylistがC#で一次元または多次元であるかどうかを見つける方法。?

public struct ParameterValues 
{ 
    public ArrayList al; 
}; 

ArrayList alCombined = new ArrayList(); 

for(int i=0; i < CONDITION , i++) 
    alCombined.Add(obj.pValue.al); 

ArrayList alCombinedの寸法は、条件によって異なります。その1の場合は、1次元アーリーリストが作成されます。そうでなければ、多次元Arraylistが作成されています。 ArrayListに型キャストが不可能であるよう

今すぐalCombinedの要素にアクセスするために、私はそれを型キャストしてアクセスし、

(((ArrayList)al[i])[j]) 

ようしかし、その1-DのArrayListの場合だエラーが発生します。

だから私はこれのための解決策、またはその単一/多次元arraylistを見つける方法が必要です。 FYI:CONDITION変数に依存してはいけません。 d条件が複数の場合のように、それは確かに多次元になります。

ありがとうございます。 「多次元のArrayList」のようなものは本当にありませんどの程度

if(al[i] is ArrayList) 
{ 
    ... 
} 

答えて

5

1

ArrayListsには特定の要素タイプがありません。 1つの要素は整数、もう1つは文字列、もう1つはint[]、もう1つはArrayListです。あなたのコードの

いくつかの提案:

  • 変更可能な構造体は悪い考えです。それらを避けてください。おそらく最初に構造体が必要なわけではなく、変更可能な構造体はあらゆる種類の予期しない動作を引き起こす可能性があります。
  • パブリックフィールドは悪い考えです。それらを避けてください。フィールドは実装の詳細であり、APIの一部であってはなりません。
  • ArrayListは効果的に推奨されていません。代わりにジェネリックコレクションを使用してください。それは型情報をはるかに明確にするでしょう。
  • このような状況に陥らないように、データ構造を設計する必要があります。理想的には、実行時の型チェックがコード内でほとんど行われていないはずです。おそらく、あなたが達成しようとしていることについてもっと多くの情報を与えることができれば、あなたはそれを再設計することができます。
関連する問題