C#中的列表和类。试图计算两个不同类类型的列表

时间:2014-07-30 14:11:51

标签: c# class

我有两个列表,ListAListBListA的类型为classAListB的类型为classB。 我有一个变量选择其中一个类。 从两者,我需要得到计数,因为我正在为不同的产品构建一个通用页面。该页面显示了这些值,但是在列表的情况下,我需要得到计数。

我的想法是这样的:

object l;

if (ProductType == "A") 
{
    l = new List<classA>();
    ...
}
else
{
    l = new List<classB>();
    ...
}

var counter = l.Count(); // it is not working

我正在使用一个对象来初始化列表,但也许我应该使用通用IEnumerable对象来执行它(我不知道)。

classAclassB我认为他们是从同一个基地继承的。

页面的其余部分非常相似。

我该如何解决?

3 个答案:

答案 0 :(得分:3)

l的类型更改为System.Collections.IList

E.g。

IList l;

if (ProductType == "A") 
{
    l = new List<classA>();
    ...
}
else
{
    l = new List<classB>();
    ...
}

var counter = l.Count; // Count is a property here.

答案 1 :(得分:0)

您可以将变量键入为IListICollection(非通用)两个List<T>实现的变量,并且这两个变量都可以为您提供Count

当然,如果你只关心计数而没有其他选择,那么另一个选择就是简单地将变量键入int并让if语句的每个部分直接分配计数,而不是整个清单。

答案 2 :(得分:-1)

如果您的目标是获得计数,那么ICollection就足够了。

我不建议使用IList,因为您可以访问列表本身,即添加删除元素。

ICollection collection;

if (ProductType == "A") 
{
    collection = new List<classA>();
    ...
}
else
{
    collection = new List<classB>();
    ...
}

var counter = collection.Count;