现在的位置: 首页 > 综合 > 正文

C# List 泛型中遍历不同类型

2012年12月03日 ⁄ 综合 ⁄ 共 2552字 ⁄ 字号 评论关闭
List <Person> person = new List <Person>(); 
Person p1 
= new Person("张三"26, Gender.Male, "看书"); 
Person p2 
= new Person("张四"55, Gender.Male, "钓鱼"); 

List <Student> stu = new List <Student>(); 
Student s1 
= new Student("李四"26, Gender.Male, "电影""S2T11"); 
Student s2 
= new Student("李五"20, Gender.Male, "电脑""S2T11"); 

List <Teacher> tch = new List <Teacher>(); 
Teacher t1 
= new Teacher("王五"26, Gender.Male, "音乐""S1,S2,Y2"); 
Teacher t2 
= new Teacher("王六"30, Gender.Male, "音乐""S1,S2"); 

person.Add(p1); 
person.Add(p2); 
person.Add(s1); 
person.Add(s2); 
person.Add(t1); 
person.Add(t2); 
/////////////用for遍历出Student类型和Teacher类型//////////////////
for (int i = 0; i < person.Count; i++

if (person[i] is Student) 

((Student)person[i]).SayHi(); 

else if (person[i] is Teacher) 

((Teacher)person[i]).SayHi(); 


========================================
用foreach来遍历出Student类型和Teacher类型   替换上面for的遍历
========================================

基类 Person  子类 Student Teacher

static void Main(string[] args) 
        { 
          
            List 
<Person> person = new List <Person>(); 
            Person p1 
= new Person("张三"26, Gender.Male, "看书"); 
            Person p2 
= new Person("张四"55, Gender.Male, "钓鱼"); 

            Person s1 = new Student("李四"26, Gender.Male, "电影""S2T11"); 
            Person s2 
= new Student("李五"20, Gender.Male, "电脑""S2T11"); 

            Person t1 = new Teacher("王五"26, Gender.Male, "音乐""S1,S2,Y2"); 
            Person t2 
= new Teacher("王六"30, Gender.Male, "音乐""S1,S2"); 

            person.Add(p1); 
            person.Add(p2); 
            person.Add(s1); 
            person.Add(s2); 
            person.Add(t1); 
            person.Add(t2); 

            //for (int i = 0; i < person.Count; i++) 
            
//
            
//    if (person[i] is Student) 
            
//    { 
            
//        ((Student)person[i]).SayHi(); 
            
//    } 
            
//    else if (person[i] is Teacher) 
            
//    { 
            
//        ((Teacher)person[i]).SayHi(); 
            
//    } 
            
//
            foreach (Person p in person) 
            { 
                
if (p is Student) 
                { 
                    p.SayHi(); 
                } 
                
else if (p is Teacher) 
                { 
                    p.SayHi(); 
                } 
            } 

          Console.ReadLine(); 
        }

或者:这样。。。。。。。。。。

 if (p is Student)
                {
                    p.SayHi();
                }
                
else if (p is Teacher)
                {
                    p.SayHi();
                } 

抱歉!评论已关闭.