c#中的列表和类.试图获得两个不同类类型列表的计数

本文关键字:列表 两个 类型 同类 | 更新日期: 2023-09-27 18:15:33

我有两个列表,ListAListBListA的类型为classA, ListB的类型为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我认为它们继承自相同的基。

这一页的其余部分非常相似。

如何解决?

c#中的列表和类.试图获得两个不同类类型列表的计数

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

IList l;
if (ProductType == "A") 
{
    l = new List<classA>();
    ...
}
else
{
    l = new List<classB>();
    ...
}
var counter = l.Count; // Count is a property here.

您可以将变量键入IListICollection(非泛型),这两个List<T>都实现了,并且它们都可以为您提供Count

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

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

我不建议使用IList,因为您可以访问列表本身,即添加删除元素。
ICollection collection;
if (ProductType == "A") 
{
    collection = new List<classA>();
    ...
}
else
{
    collection = new List<classB>();
    ...
}
var counter = collection.Count;