Maison >développement back-end >C++ >Existe-t-il de meilleures alternatives pour simuler un changement de type en C #?

Existe-t-il de meilleures alternatives pour simuler un changement de type en C #?

Barbara Streisand
Barbara Streisandoriginal
2025-01-28 15:11:13792parcourir

Are There Better Alternatives to Simulating a Switch on Type in C#?

Existe-t-il une meilleure alternative à la commutation en fonction du type?

Le fragment de code fourni est une méthode courante qui simule la commutation en fonction du type en C #. Cependant, dans différents scénarios, il peut y avoir plusieurs alternatives plus appropriées.

C # 7 et versions supérieures

Avec l'introduction de C # 7, il peut être commuté pour réaliser le type réel en fonction de la correspondance du mode:

c # 6
<code class="language-csharp">switch(shape)
{
    case Circle c:
        WriteLine($"圆形,半径为 {c.Radius}");
        break;
    case Rectangle s when (s.Length == s.Height):
        WriteLine($"{s.Length} x {s.Height} 正方形");
        break;
    case Rectangle r:
        WriteLine($"{r.Length} x {r.Height} 矩形");
        break;
    default:
        WriteLine("<未知形状>");
        break;
    case null:
        throw new ArgumentNullException(nameof(shape));
}</code>

En C # 6, vous pouvez utiliser l'opérateur NameOf () dans l'instruction Switch:

C # 5 et Versions antérieures

<code class="language-csharp">switch(o.GetType().Name) {
    case nameof(AType):
        break;
    case nameof(BType):
        break;
}</code>

Avant C # 5, vous pouvez toujours simuler la commutation en fonction du type, mais cela nécessite une chaîne contenant le nom de type:

L'alternative à choisir dépend des exigences spécifiques de l'application et de la version C # utilisée.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn