istnieje wiele razy, w którym mam tekst wejściowy,C# pusty ciąg -> zero?
i jeśli jego puste (nie zrobił użytkownik wpisać dowolny tekst) - chcę wysłać do zapytania DB „null”
i nieString.Empty.
(lub "")
więc uważam moje ja robi to dużo:
var mySqlValue = string.IsNullOrEmpty(tbCustomerId.Text)?null:tbCustomerId.Text;
to wydaje mi się brzydkie.
.net daje wiele innych rozwiązań na przeciwległych scenariuszy:
string.IsNullOrEmpty
string.IsNullOrWhiteSpace
myProblemVal ?? myDefultVal
Wiem, że to może być rozwiązany za pomocą metod rozszerzenie - i wiem jak to zrobić ..
ale czy jest coś lepszego?
czy istnieje inteligentny kod dla: "if its empty -> null
".
Istnieje również następujący problem: Jeśli '.Text' jest właściwością (tj. Wywołaniem do' get' dostępowego), to po pierwszym wywołaniu gettera może zwrócić długi łańcuch, np. "John Doe" '. Dostajemy do oceny ostatniego "komponentu" potrójnego operatora '?:'. Ale to znowu wywołuje getter 'Text' i tym razem może zwrócić' "". W tym celu musisz pobrać lokalną zmienną kopię 'Text'. Oczywiście nie jest to konieczne, jeśli używasz metody rozszerzenia. –
Jeśli używasz metody rozszerzenia, możesz 'Trim()' ciąg przed sprawdzeniem, co jest trudne do zrobienia w pojedynczym wyrażeniu. – toddmo