« Switch » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Aucun résumé des modifications
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 23 : Ligne 23 :
         ...
         ...
         return true;
         return true;
    case var x when x > 0 && x < 10:
        ...
        return false;


     default:
     default:
         throw new ArgumentOutOfRangeException(nameof(i), i, "message");
         throw new ArgumentOutOfRangeException(nameof(i), i, "message");
         throw new InvalidEnumArgumentException(nameof(i), (int)i, typeof(MyEnum));
         throw new InvalidEnumArgumentException(nameof(i), (int)i, typeof(MyEnum));
        throw new InvalidOperationException("message");
        throw new NotSupportedException($"The value '{i}' is not supported.");
         break;
         break;
}
}

Dernière version du 20 octobre 2024 à 12:56

Links

Exemple

Csharp.svg
switch (i)
{
    case 1:
        ...
        break;

    case 2:
    case 3:
        ...
        goto case 1;

    case 4:
        ...
        goto default;

    case 5:
        ...
        return true;

    case var x when x > 0 && x < 10:
        ...
        return false;

    default:
        throw new ArgumentOutOfRangeException(nameof(i), i, "message");
        throw new InvalidEnumArgumentException(nameof(i), (int)i, typeof(MyEnum));
        throw new InvalidOperationException("message");
        throw new NotSupportedException($"The value '{i}' is not supported.");
        break;
}

// depuis VS 2017, switch accèpte d'autres types que int, char et string
switch (myObject)
{
    case MyType1 object1:  // si myObject est du type MyType1 → cast dans object1
        break;

    case MyType2 object2 when object2.MyProp > 0:  // si myObject est du type MyType2 → cast dans object2 puis test object2.MyProp > 0
        break;
}