actuellement dans C# 7 (version 15.3.4) code suivant est valide pour la compilation, mais les deux variables sont légitimement inutilisables.Correction de correspondance dans le modèle
switch(fruit)
{
case Apple apple:
case Orange orange:
// impossible to use apple or orange
break;
case Banana banana:
break;
}
Si vous essayez de les utiliser, vous obtenez une erreur familière, la variable peut ne pas être initialisée avant d'y accéder.
Parfois, dans la correspondance de modèle, vous ne vous souciez pas du type exact, à condition que ce type soit dans la catégorie souhaitée. ici seulement des pommes et des oranges à titre d'exemple.
List<Fruit> applesAndOranges = new List<Fruit>();
switch(fruit)
{
case Fruit X when X is Apple || X is Orange:
applesAndOranges.Add(X);
break;
case Banana banana:
break;
}
Y a-t-il de meilleures approches?