在C#中查找泛型列表中的对象索引

时间:2017-08-10 17:22:42

标签: c# list object generics indexing

我有一个通用类

// Main Program
#include "stdafx.h"
#include "Eng1Class.h"
#include "Eng2Class.h"

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

现在有一个foo类的方法,它应该返回boo类型对象的索引。

public class foo <T> where T:boo
{
  List<T> fooList;
}

不幸的是,这不起作用,因为booObject无法转换为Type T ...

我怎样才能获得索引??? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您必须将参数booObject的类型更改为泛型类型T.这是因为您定义了类型T派生形式boo,但它仍然不是boo }。这意味着,它可能是从goo派生的某个类boo。但是你会尝试从boo类型的对象列表中获取类型为goo的对象的索引 - 这是没有意义的。

此外,您忘记了方法的返回类型并实际返回评估的索引:

public class foo<T> where T : boo
{
    List<T> fooList;

    public int getIndex (T booObject)
    {
        int index = fooList.IndexOf (booObject);
        return index;
    }
}

有关泛型的更多信息,请查看this