Conversion de Richter
1. Les sous-classes peuvent être attribuées aux classes parentes
En d'autres termes, si un lieu a besoin d'une classe parente, nous pouvons lui donner une sous-classe à la place
Ce que je veux, c'est une personne, je m'en fous si tu me donnes une soeur ou une loli (rires)
1 classe Personne 2 { 3 public void SayHellow() 4 { 5 Console.WriteLine( " Personne " ); 6 } 7 } 8 classe Étudiant : Personne 9 { 10 public void SayHellow() 11 { 12 Console.WriteLine( " Student " ); 13 } 14 } 15 classeEnseignant:Personne 16 { 17 public void SayHellow() 18 { 19 Console.WriteLine( " Enseignant " ); 20 } 21 } 22 23 24 classe Programme 25 { 26 27 static void Main( string [] args) 28 { 29 Student st = new Student(); 30 Personne pe = st; 31 Console.WriteLine(pe.GetType().ToString()); 32 pe.SayHellow(); 33 Étudiant st2 = (Étudiant)pe ; 34 st2.SayHellow(); 35 36 Console.ReadKey(); 37 } 38 } 39 /*输出为: 40 ConsoleApplication2.Student 41 Person 42 Student 43 */
La ligne 29.30 peut être abrégée comme suit :
1 personne pe = nouvel étudiant();
2. Si la classe parent contient un objet de sous-classe, alors la classe parent peut être convertie en un objet de sous-classe
Cette personne est une loli, alors je peux la traiter comme une loli, mais je ne peux pas la traiter comme Yujie
dans le code précédent
1 Étudiant st2 = (Étudiant)pe ;
C'est ce que cela signifie, car bien que pe soit un type de personne, il contient étudiant
tel qu'exécuté
1 Enseignant st2 = (Enseignant)pe ;
lèvera une exception
C'est-à-dire que si cette personne est un étudiant, vous pouvez lui demander de faire le travail de l'étudiant, mais vous ne pouvez pas lui demander de faire le travail du professeur.
est Et comme
est, s'il peut être converti, renvoie vrai, sinon renvoie faux
1 if (pe is Teacher) 2 { 3 Console.WriteLine( " Teacher " ); 4 } else if (pe is Student) 5 { 6 Console.WriteLine( " Student " ); 7 }
Sortie du résultat : étudiant
as, s'il peut être converti, renvoie l'objet converti, sinon renvoie null
1 Student st2 = pe as Student ; 2 st2.SayHellow(); 3 Teacher te = pe as Teacher ; 4 if (te== null ) 5 { 6 Console.WriteLine( " null " ); 7 } 8 // Le résultat de sortie est : étudiant, null
Réimprimé à : https://www.cnblogs.com/Yukisora/p/7017509.html