Le motif correspond-il dans le C # mieux que la commutation basée sur le type traditionnel?
Dans le langage qui ne prend pas en charge la "commutation par type" en C #, les programmeurs utilisent généralement la structure classique "si ... sinon si ... else" pour simuler la commutation basée sur le type. Cependant, à mesure que le nombre de types augmente, cette méthode deviendra longue et fragile.
C # 7 et le mode de version supérieure correspond à
De C # 7, la correspondance du modèle offre un moyen plus élégant et plus concis de basculer par type. La grammaire "Type de cas" permet le type de variables correspondantes et remplace efficacement l'instruction "IF" en cas de mode spécifique. par exemple:
C # 6 Utiliser NameOf ()
En C # 6, vous pouvez utiliser le symbole de calcul NameOf () pour obtenir dynamiquement le nom de type pour l'instruction Switch. Bien qu'il ne soit pas aussi simple que le motif, il fournit une alternative plus facile à reconstruction pour éviter les noms de types de codage dur.
<code class="language-csharp">void Foo(object o) { switch (o) { case A a: // 匹配A类型 a.Hop(); break; case B b: // 匹配B类型 b.Skip(); break; default: throw new ArgumentException("意外类型: " + o.GetType()); } }</code>
C # 5 et Version antérieure - Commutation basée sur la version
Pour les versions C # 5 et antérieures, vous n'avez pas d'autre choix que d'utiliser la structure de base "if ... else if ... else" avec un nom de type de codage dur. Cette méthode peut devenir maladroite et facile à faire des erreurs.
<code class="language-csharp">void Foo(object o) { switch (o.GetType().Name) { case nameof(A): // 处理A类型 break; case nameof(B): // 处理B类型 break; default: // 处理其他类型 break; } }</code>
Conclusion
C # 7 et la correspondance de mode de version supérieure fournit une méthode puissante et concise de commutation basée sur la simulation. Il élimine la demande de la chaîne de conditions, améliore la lisibilité du code et réduit la possibilité d'erreurs. Pour les premières versions de C #, en utilisant NameOf () et les instructions de commutation ont fourni une alternative plus flexible que le nom du type de codage dur, et la structure classique "si ... sinon si ... else" n'est toujours pas des choix idéaux mais toujours possibles .Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!