C # rzutowanie i analizowanie
Który z poniższych jest najlepszym kodem do użycia w języku C # i dlaczego?
((DateTime)g[0]["MyUntypedDateField"]).ToShortDateString()
lub
DateTime.Parse(g[0]["MyUntypedDateField"].ToString()).ToShortDateString()
Ostatecznie, co lepiej wyrzucić lub rozebrać?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
6 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
tylko
dobra odpowiedź.
Należy pamiętać, że wyniki ToString i Parse nie zawsze są dokładne - zdarzają się sytuacje, w których nie można bezpiecznie nawigować między tymi dwiema funkcjami.
Dokumentacja ToString mówi, że używa bieżących ustawień kultury strumienia. Dokumentacja Parse mówi, że używa również bieżących ustawień kultury przepływu (tak dobre jak dotąd - używają tej samej kultury), ale istnieje wyraźna uwaga, że:
Na formatowanie mają wpływ właściwości bieżącego obiektu DateTimeFormatInfo, które domyślnie pochodzą z opcji regionalnych i językowych w Panelu sterowania.
Jednym z powodów, dla których metoda Parse może nieoczekiwanie zgłosić FormatException, jest to, że bieżące właściwości DateTimeFormatInfo.DateSeparator i DateTimeFormatInfo.TimeSeparator mają tę samą wartość.
Tak więc, w zależności od preferencji użytkownika, kod ToString/Parse może nieoczekiwanie ulec awarii ...
Anonimowy użytkownik
Potwierdzenie od:
Więc zadzwoń w ten sposób;
Zauważ, że złe dane generują wyjątek, więc będziesz chciał je złapać.
Ponadto operator „as” nie działa z typem danych DateTime, ponieważ działa tylko z typami referencyjnymi, a DateTime jest typem wartości.
Anonimowy użytkownik
Potwierdzenie od:
g[0]["MyUntypedDateField"]
... Bezpieczną praktyką jest używanie
DateTime.TryParse
i w
jakość
operator.
Anonimowy użytkownik
Potwierdzenie od:
Jeśli jednak istnieje ryzyko wyrzucenia wyjątku podczas rzucania, możesz wybrać drugą drogę, aby uniknąć kosztownych wyjątków. W przeciwnym razie przejdź do najbardziej wydajnej trasy i po prostu rzuć raz (obiekt do DateTime), a nie dwa razy (obiekt do ciągu do DateTime).
Anonimowy użytkownik
Potwierdzenie od:
http://blogs.msdn.com/bclteam/ ... 1436. aspx
http://blogs.msdn.com/bclteam/ ... .aspx
.