web-dev-qa-db-fra.com

Ligne unique si déclaration avec 2 actions

Je voudrais faire une seule ligne si déclaration avec plus d'une action.

La valeur par défaut est la suivante:

(if) ? then : else

userType = (user.Type == 0) ? "Admin" : "User";

Mais je n'ai pas besoin d'un "autre" seulement, j'ai besoin d'un "autre si"

comme ça en multi ligne:

if (user.Type == 0)
    userType = "Admin" 
else if (user.Type == 1)
    userType = "User"
else if (user.Type == 2)
    userType = "Employee"

Y at-il une possibilité pour cela en ligne simple?

30
Nagelfar

On dirait que tu veux vraiment un Dictionary<int, string> ou éventuellement une instruction switch ...

Vous pouvez le faire avec l'opérateur conditionnel si:

userType = user.Type == 0 ? "Admin"
         : user.Type == 1 ? "User"
         : user.Type == 2 ? "Employee"
         : "The default you didn't specify";

Bien que vous puissiez le mettre en une ligne, je vous exhorte vivement à ne pas le faire.

Je voudrais normalement seulement le faire dans des conditions différentes, mais pas seulement avec plusieurs valeurs possibles, ce qui est mieux géré dans une carte.

74
Jon Skeet
userType = (user.Type == 0) ? "Admin" : (user.type == 1) ? "User" : "Admin";

devrait faire l'affaire.

18
user529758

Vous pouvez écrivez cela en une seule ligne, mais ce n'est pas quelque chose que quelqu'un pourrait lire. Gardez-le comme vous l'avez déjà écrit, c'est déjà beau tout seul.

Si vous en avez trop if/else _ constructions, vous pouvez penser à utiliser différentes infrastructures de données, comme Dictionaries (pour rechercher des clés) ou Collection (pour exécuter des requêtes conditionnelles LINQ)

6
Tigran