2

私はC#を初めて使用し、オブジェクトのArrayList unitArrayがあり、で参照されているオブジェクトのメソッドUnitを呼び出そうとしているプログラムを作成しています。特定のオブジェクトにアクセスしてそのメソッドを呼び出そうとしましたが、機能しません。この問題の解決にご協力いただければ幸いです。non-staticArrayList

Unit.unitArray[selectedUnit].DisplayUnitAttributes()

次の例外が発生します。

'object' does not contain a definition for 'DisplayUnitAttributes' and no extension method 'DisplayUnitAttributes' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?) 
4

3 に答える 3

5

オブジェクトをそのタイプとしてキャストする必要があります。以下のMyClassの代わりに、実際のクラスタイプをに置き換えてください。

(Unit.unitArray[selectedUnit] as MyClass).DisplayUnitAttributes()
于 2012-09-17T02:41:21.297 に答える
3

から抽出された要素のタイプはArrayListSystem.ObjectC#のすべてのオブジェクトの基本クラスです。

メソッドにアクセスするには、要素を派生型にキャストする必要がありますSystem.Generic.List<T>が、リスト内の要素の型であるaを使用することをお勧めします。

于 2012-09-17T02:49:59.470 に答える
1

Enumerable.OfTypeメソッドを使用して、必要なサブ配列を取得できます。このようなもの:

foreach (YourClass obj in Unit.unitArray.OfType<YourClass>())
    obj.DisplayUnitAttributes();
于 2012-09-17T02:58:39.330 に答える