我有两个列表,ListA
和ListB
。 ListA
的类型为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
对象来执行它(我不知道)。
classA
和classB
我认为他们是从同一个基地继承的。
页面的其余部分非常相似。
我该如何解决?
答案 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)
您可以将变量键入为IList
或ICollection
(非通用)两个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;