J'ai la définition de la propriété suivante à l'intérieur d'une classe dérivée fenêtre WPF:comportement Bizarre enum.TryParse
internal Side? Side
{
get
{
if (SideComboBox.SelectedIndex==-1)
return null;
Side side;
if (!Enum.TryParse(SideComboBox.SelectedValue as string, out side))
return null;
return side;
}
}
La fonction retourne toujours nulle. Alors je me dis, je vais y aller et voir ce qui se passe. Eh bien, il s'avère que la méthode TryParse renvoie toujours la valeur false (c'est-à-dire que le corps de la seconde instruction if est exécuté et retourne donc null). Je regarde la valeur de la chaîne pour voir si elle est en fait une valeur valide pour l'énumération et bien sûr qu'elle l'est. Pourquoi l'analyse échoue-t-elle toujours même lorsque des chaînes valides sont envoyées dans TryParse?
Voici la définition enum:
enum Side
{
Buy,
Sell
}
Mise à jour: OK les gars, un moment LOL défini ici. Il s'avère que SelectedValue retourne effectivement l'enum elle-même et non une chaîne, mais quand je l'affiche dans le débogueur, il la convertit toujours implicitement en une chaîne. Enfin, après avoir lu vos commentaires, j'ai décidé de double-cliquer sur la valeur dans la fenêtre de surveillance, seulement pour découvrir à mon horreur que la valeur est MyApp.Side.Sell - une énumération et non une chaîne. Alors, craie un autre pour vérifier le résultat de as
pour être non nul!
Vérifiez soigneusement la valeur de retour de 'SideComboBox.SelectedValue sous forme de chaîne' ... –
Avez-vous vérifié la valeur de' SideComboBox.SelectedValue sous forme de chaîne'? – remio
Voir Mise à jour et merci les gars! –