Commutateur cas avec l'opérateur Booléen
Je suis en train de créer un préfixe valeur de texte pour un projet. Je suis à l'aide de l'interrupteur cas pour que. Lorsque l'utilisateur sélectionnez le bouton radio nous devrions donner la valeur de préfixe.
que dois-je donner après le "switch ()"
La valeur provenant de la sélection de l'utilisateur est une valeur booléenne.
La sortie est de la chaîne.
toute aide..
public string officePostfix()
{
string postfix = null;
switch (...)
{
case SheetMgrForm.Goldcoast = true:
postfix = "QLD";
break;
case SheetMgrForm.Melbourne = true:
postfix = "MEL";
break;
case SheetMgrForm.Sydney = true:
postfix = "SYD";
break;
case SheetMgrForm.Brisbane = true:
postfix = "BIS";
break;
}
return postfix;
}
- Je pense que votre conception est erronée. Vous devriez être en utilisant une "zone" enum ou quelque chose (quelque chose est un ID de la base de données, ou à court code qui identifie l'entrée), plutôt que des champs booléens pour chaque zone.
- plus ce genre de chose semble comme il devrait être fait à l'aide d'un dictionnaire...
- Pourquoi ne pas simplement utiliser des if et else?
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas la façon dont
switch
œuvres. Vous ne pouvez pas mettre un arbitraire expression booléenne dans chaquecase
(en supposant que tu veux dire==
et pas=
, btw).Vous devez utiliser un ensemble de
if-else
blocs, comme:Toutefois, il ressemble à la conception pourrait utiliser une certaine reprise. Avoir tous ces séparée des booléens est maladroit.
Une autre approche consiste à utiliser une énumération de définir vos zones, puis la carte à un fichier de ressources. Cela rend plus facile à gérer, par exemple, la localisation ou la poursuite de l'extension dans l'avenir, et pourrait être utile si la liste est longue, c'est à dire automatiser la création de l'enum et de ressources par l'intermédiaire de T4, ou si vous avez une requête à un service web, ou quoi que...
Par exemple, disons que vous avez un
AreaPostfixes
fichier de ressources et unArea
énumération.Qui supprime toute nécessité pour les interrupteurs, etc., la seule chose que vous devez vous assurer, c'est qu'il y a un mappage 1:1 pour chaque enum et de ressources. Je le fais via des tests unitaires, mais il est assez facile de placer une Assertion ou lever une exception si GetString renvoie la valeur null dans la Postfix méthode d'extension.
switch
ne prend pas en charge cette. Le cas doit être constante. Le cas doit également être unique.Vous avez besoin pour activer votre les propriétés booléennes dans un
enum
et d'éteindre ou changer votre interrupteur dans une normeif
déclarationhttp://msdn.microsoft.com/en-us/library/06tc147t(v=vs. 110).aspx
Ce serait probablement de retour de votre résultat souhaité, mais c'est une espèce de truand de la force brute de la méthode. Le cas de la partie est s'attendant à recevoir une valeur constante. Dans ce cas, vous avez affaire du "vrai" ou "cas de faux:" (même si je ne suis pas sûr de ce que vous feriez avec cette, dans cette instance).