2010-04-21 15 views
6

Czy istnieje skrótowy sposób na denillifię ciąg w C#?Czy istnieje skrótowy sposób na denillifię ciąg w C#?

byłoby odpowiednikiem (jeśli „x” jest ciągiem znaków):

string y = x == null ? "" : x; 

Chyba mam nadzieję, że jakiś podmiot, który działa podobnie jak:

string y = #x; 

życzeniowe myślenie, co?

Najbliżej mam do tej pory jest to sposób na rozszerzenie klasy String:

public static string ToNotNull(this string value) 
{ 
    return value == null ? "" : value; 
} 

która pozwala mi robić:

string y = x.ToNotNull(); 

Wszelkie ulepszenia na tym, anyone?

+1

Unikaj pustych ciągów znaków, aby uniknąć tego problemu. Jeśli ktoś tworzy ciągi zerowe, może być konieczna przemoc. YMMV. – Greg

+0

Fakt, że twój ostatni przykład działa, jest dość przerażający, ponieważ wywołujesz metodę na obiekcie, aby sprawdzić, czy obiekt jest = pusty. Wiem, ze względu na to, że metody rozszerzania są statyczne, ale trochę się mylą, gdy się na nie patrzy. – ntziolis

+0

łańcuchy null są złe, tworzenie instancji za pomocą String.Empty i unikanie logiki jak powyżej. –

Odpowiedz

0

Jeśli trzeba to reguarly zamiast metodę rozszerzenia może warto rozważyć utworzenie własnego typu, który zachowuje się jak Nullable i dzieli ten sam użycie, ponieważ istnieje System.Nullable.GetValueOrDefault(); metoda. Niestety można używać tylko System.Nullable na typach wartości, więc nie można utworzyć standardu zerowego.

Powiązane problemy