Es el null coalescing operator: devuelve el primer argumento si no es nulo, y el segundo argumento de lo contrario. En su ejemplo, str ?? string.Empty
se está utilizando esencialmente para intercambiar cadenas nulas por cadenas vacías.
Es particularmente útil con tipos anulable, ya que permite a un valor predeterminado que se especifica:
int? nullableInt = GetNullableInt();
int normalInt = nullableInt ?? 0;
Editar:str ?? string.Empty
puede reescribirse en términos del operador condicional como str != null ? str : string.Empty
. Sin que el operador condicional, habría que utilizar una más prolija sentencia if, por ejemplo:
if (str == null)
{
str = string.Empty;
}
return str.Replace(txtFind.Text, txtReplace.Text);
Siempre he aceptado esto como un reemplazo, pero nunca realmente entendí completamente de dónde vengo; –
duplicado de http://stackoverflow.com/questions/827454/what-is-the-operator-for – tanascius
Consulte la sección 7.12 de la especificación para obtener más información. –