Dans WPF / .Net, System.Windows.Window
et System.Windows.Forms.Form
ont tous deux la méthode .ShowDialog
.
La différence est que la version Windows.Window
renvoie un bool Nullable
( bool?
Ou Nullable
), tandis que la version Forms.Form
renvoie un bool
direct.
Je n’ai pas encore vu le null bool jamais être nul, et ne peut pas trouver un cas où il serait dans la documentation MSDN.
Quelqu’un peut-il expliquer pourquoi Windows.Window.ShowDialog
renvoie un nullable? Devrais-je vérifier pour cela? Qu’est-ce que cela signifie si je vois null?
voir ici: Propriété Window.DialogResult
DialogResult est null lorsque la boîte de dialog est affichée mais ni acceptée ni annulée.
Comme le montre Kent Boogaart dans sa réponse à une question très similaire
Lorsque vous fermez les fenêtres, vous remarquerez que le dialog a un DialogResult de false, tandis que le non-dialog a un null DialogResult
Ainsi, Windows.Window.ShowDialog
renvoie une valeur nullable car il utilise la propriété DialogResult qui est null lorsque ce n’est pas une boîte de dialog
pourquoi Windows.Window.ShowDialog retourne un nullable?
Je pense que c’était juste un choix d’implémentation arbitraire. Si je devais deviner, je dirais que renvoyer un bool nullable est un peu plus léger que de créer un autre enum pour retourner le résultat. Il y a trois états pour un booléen nullable, un qui couvre toutes les bases.
ShowDialog renvoie le DialogResult de la fenêtre, qui est un Nullable. Pendant que la fenêtre est ouverte, DialogResult est null. Une fois que DialogResult est défini sur true ou false, ShowDialog renvoie ce résultat. Étant donné que toute opération de fermeture de la fenêtre affectera implicitement la valeur false à DialogResult, sauf si elle est explicitement définie, vous pouvez ignorer les valeurs null renvoyées par ShowDialog en toute sécurité (DialogResult peut être nul si vous le vérifiez directement). Ceci est simplement le résultat de la correspondance exacte des types, pour autant que je sache.