Type de retour ShowDialog: formulaire vs fenêtre

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.