我试图计算每种类型的对象在字典中有多少来显示它们,但是当计算业余类型的对象时,它还会计算所有专业和名人类型的对象,因为他们是业余的孩子。反正有没有解决这个问题而不删除继承只计算Amateur类型的对象?
示例代码:
private void GetTotalEntries()
{
string amateurEntries;
string profEntries;
string celebEntries;
amateurEntries = manager.competitors.Values.OfType<Amateur>().Count().ToString();
profEntries = manager.competitors.Values.OfType<Professional>().Count().ToString();
celebEntries = manager.competitors.Values.OfType<Celebrity>().Count().ToString();
EntriesTextBox.Text = "Amateur Entries:" + amateurEntries + "\nProfessional Entries:" + profEntries + "\nCelebrity Entries:" + celebEntries;
}
答案 0 :(得分:6)
当然有可能。例如,使用具有精确类型匹配的简单-32768
32768
(或带有谓词的Where
):
Count
答案 1 :(得分:2)
OfType<T>
计算可以转换为T
的所有元素,这显然属于T
的子类。假设你的所有manager.competitors
都是专业人士,名人或业余爱好者而且这些集合是截然不同的,你可以间接地计算业余爱好者
int prof = manager.competitors.Values.OfType<Professional>().Count();
int celeb = manager.competitors.Values.OfType<Celebrity>().Count();
int amateurs = manager.competitors.Count() - (prof + celebs)