可以计算不计算子对象的类型的对象吗?

时间:2016-05-01 13:08:21

标签: c#

我试图计算每种类型的对象在字典中有多少来显示它们,但是当计算业余类型的对象时,它还会计算所有专业和名人类型的对象,因为他们是业余的孩子。反正有没有解决这个问题而不删除继承只计算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;
}

2 个答案:

答案 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)