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
Libérer: 2025-01-28 15:11:13
original
854 Les gens l'ont consulté

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
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));
}
Copier après la connexion

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

<> C # 5 et Versions antérieures

switch(o.GetType().Name) {
    case nameof(AType):
        break;
    case nameof(BType):
        break;
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal