OpenFileDialog Metoda ShowDialog zwraca zerową wartość logiczną, ustawioną na wartość true, jeśli użytkownik kliknął przycisk OK lub false, jeśli kliknął przycisk Anuluj. Kiedy powraca null
? Dokumentacja nie mówi.Kiedy metoda Microsoft.Win32.OpenFileDialog.ShowDialog() zwraca wartość null?
Odpowiedz
ta jest zawarta w pytaniach związanych poniżej, ale będę tutaj wspomnieć, że Programming WPF (Chris Sells, Ian Griffiths) mówi:
ShowDialog zawsze zwraca true lub fałszywe. ... Tylko po wyświetleniu okna dialogowego , ale przed jego zamknięciem, jest wartością DialogResult.
Podobne pytanie: When would ShowDialog() return null?
Według .NET reflector, Microsoft.Win32.OpenFileDialog.ShowDialog
jest realizowany przez klasę bazową, Microsoft.Win32.CommonDialog
. Że realizacja ma tylko jedną klauzulę powrotu:
return new bool?(this.RunDialog(activeWindow));
RunDialog
zwraca bool
, a nie bool?
.
bool?
to tylko C# shorthand dla System.Nullable<bool>
. constructor of System.Nullable<bool>
, zgodnie z odbłyśnikiem ponownie, ustawia wartość nullable na jego parametr i oznacza jego właściwość hasValue jako true.
Więc ... nie powinieneś nigdy otrzymywać wyników w postaci null
. Szybki test potwierdza, że zamknięcie okna dialogowego bez anulowania (czerwony przycisk x) rzeczywiście zwraca wartość false
, a nie null
.
Wersja OpenFileDialog systemu Windows Forms zwraca DialogResult, który ma wider range of values.
Zgaduję, że OpenFileDialog zwraca bool? być spójnym z innymi dialogami WPF, które faktycznie mogą zwrócić wynik zerowy.
- 1. Metoda F # zwraca wartość null zamiast opcji
- 2. Dlaczego metoda AndroidTestCase.getContext(). GetApplicationContext() zwraca wartość null?
- 3. Kiedy JavaScript zwraca wartość null & undefined?
- 4. Czy metoda fabryka zwraca wartość NULL?
- 5. Metoda get hashmap nie zwraca wartość null
- 6. Plus.PeopleApi.getCurrentPerson zwraca wartość null
- 7. mapFragment.getMap() zwraca wartość null
- 8. System.Web.Security.FormsAuthentication.Encrypt zwraca wartość null
- 9. getSystemResourceAsStream() zwraca wartość null
- 10. Sensor.TYPE_ROTATION_VECTOR zwraca wartość null
- 11. ConfigurationManager.AppSettings - Zwraca wartość Null
- 12. getResourceAsStream() zawsze zwraca wartość null
- 13. Metoda v.getTag() zwraca wartość null zamiast obiektu ViewHolder
- 14. Dlaczego chrome.extension.getBackgroundPage() zwraca wartość null?
- 15. avcodec_find_encoder (AV_CODEC_ID_H264) zwraca wartość null
- 16. LiveData.getValue() zwraca wartość null z pokoju
- 17. GetTemplateChild zawsze zwraca wartość null
- 18. getDrawingCache() zawsze zwraca wartość null
- 19. SelectSingleNode zawsze zwraca wartość null?
- 20. searchManager.getSearchableInfo (getComponentName()) zwraca wartość null
- 21. Java Singleton.getInstance() zwraca wartość null?
- 22. ReplyManager getBestProvider zwraca wartość null
- 23. android.support.v4.app.getFragmentManager() zwraca wartość null?
- 24. getLayoutParams ImageView() zwraca wartość null
- 25. Intent.getExtras() zawsze zwraca wartość null
- 26. Dlaczego Activity.getPackageManager() zwraca wartość null
- 27. Request.getAttribute ("javax.servlet.request.X509Certificate") Zwraca wartość Null
- 28. newSpellCheckerSession zawsze zwraca wartość null
- 29. Kiedy WeakReference # get() zaczyna zwracać wartość null?
- 30. Kiedy mysql_query zwraca wartość false
"Ciekawość" to doskonale trafna odpowiedź, ale jestem ciekaw, dlaczego pytasz? Dlaczego po prostu nie porównać tego, co powróci do "prawdziwej" (TryParse, itp., Itd.) I kontynuować? – lance
Zastanawiasz się, dlaczego używają zerowej wartości boolowskiej ponad standardową. Porównywanie do prawdziwych dzieł dobrze, jak sugerujesz. –
Teraz też mnie ciekawi. Mam nadzieję, że ktoś przyjdzie z dobrą odpowiedzią! – lance