To jest null coalescing operator: zwraca pierwszy argument, jeśli ma wartość inną niż null, a drugi - inaczej. W twoim przykładzie do zamiany pustych ciągów na puste ciągi służy zasadniczo str ?? string.Empty
.
Jest to szczególnie przydatne przy pustych typów, gdyż pozwala domyślna wartość należy określić:
int? nullableInt = GetNullableInt();
int normalInt = nullableInt ?? 0;
Edit:str ?? string.Empty
mogą być zapisane pod względem operatora warunkowego jako str != null ? str : string.Empty
. Bez operatora warunkowego, trzeba by użyć bardziej gadatliwy if, np:
if (str == null)
{
str = string.Empty;
}
return str.Replace(txtFind.Text, txtReplace.Text);
Zawsze akceptowałem to jako zastępstwo, ale nigdy tak naprawdę nie rozumiałem w pełni, skąd pochodzi ono ode mnie; –
duplikat http://stackoverflow.com/questions/827454/what-is-the-operator-for – tanascius
Szczegóły w sekcji 7.12 specyfikacji. –