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

ArrayList从 an中提取的元素类型System.Object是 C# 中所有对象的基类。

您必须将 element 转换为派生类型才能访问方法,或者更好地使用System.Generic.List<T>其中 T 是列表中元素的类型。

于 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 回答