C# 리드 변환 지침

15894 단어 ---C#C#기초학습

문서 목록

  • 의 이점
  • 유형 변환
  • 키워드 is 변환 연습
  • 장점


    1. 코드의 중용성을 높이고 서브클래스는 부류의 방법과 속성을 가진다.2. 코드의 확장성을 높이고 서브클래스는 부류와 비슷하지만 부류와 달리 자신의 특성을 보존한다.

    유형 변환


    변형 표시: 상위 객체를 하위 클래스 유형으로 변환하려면 강제 변환을 사용해야 합니다.
    case1
    Person p = new Person();
    Person p1 = new Student ();//    ,            
    

    case2
    Person p = new Person();
    Student stu = (Student)p;//    
    stu.SayHello();
    

    case3
    Person p = new Teacher();
    Teacher t = (Teacher)p;//    
    t.SayHi();
    

    암시적 변환: 하위 클래스 대상을 부모 클래스로 변환하면 바로 변환할 수 있습니다
    Student stu = new Student();//    
    Person p = stu;
    p.Show();
    

    키워드 is/as 변환:
    is 변환: bool 값을 되돌려줍니다.true는 변환할 수 있고false는 변환할 수 없습니다.as변환: as변환을 사용할 때 변환이 불가능할 경우 이상을 보고하지 않으며 반환값은 Null입니다.호출 방법에 이상이 있습니다.
    //   is  
    Person p = new Student();//       
    bool result = p is Teacher;
    if(result )
    {
    	Teacher t=(Teacher)p;
    }
    else
    {
    	Console.WriteLine("    ");
    }
    Console.ReadKey();
    
    //   as  
    Teacher t = new Teacher();//       
    Person p = t as Person;
    p.PerShow();
    
    Person p = new Teacher();//       
    Teacher t = p as Teacher;
    t.TeaShow();
    

    키워드 is 변환 연습


    무작위 생성 클래스, 생성 클래스를 추출하는 방법.
    static void Main(string[] args)
    {
    	Person[] per = new Person[10];//        
    	Random r = new Random();//   
    	
    	for (int i = 0; i < per.Length ; i++)
    	{
    	    int num = r.Next(1, 7);
    	
    	    switch (num)//        
    	    {
    	        case 1: per[i]=new Teacher();break;
    	        case 2: per[i] = new Student();break;
    	        case 3: per[i] = new ShuaiGuo();break;
    	        case 4: per[i] = new MeiNv();break;
    	        case 5: per[i] = new YeShou();break;
    	        case 6: per[i] = new Person();break;
    	    }
    	}
    	
    	for (int i = 0; i < per.Length ; i++)
    	{
    	    SayType(per[i]);
    	    
    	}
    	Console.ReadKey();
    }
    
    public static void SayType(Person p)//  :             
    {
        if(p is Teacher)
        {
            ((Teacher)p).PerShow();
        }
        else if(p is Student )
        {
            ((Student)p).StuShow();
        }
        else if(p is ShuaiGuo)
        {
            ((ShuaiGuo)p).shuaiShow();
        }
        else if(p is MeiNv)
        {
            ((MeiNv)p).MeiShow();
        }
        else if(p is YeShou)
        {
            ((YeShou)p).YeShow();
        }
        else if (p is Person)
        {
            ((Person)p).PerShow();
        }
    }
    

    좋은 웹페이지 즐겨찾기