O que significam dois pontos de interrogação em C#? (Operador ??)
Olá, colegas! Recentemente comecei a estudar C# e me deparei com uma construção estranha no código de outra pessoa. Estava escrito algo como:
```csharp
string name = userName ?? "Convidado";
```
Eu entendo que `userName` é uma variável e `"Convidado"` é uma string. Mas o que faz esse ponto de interrogação duplo (`??`)? É algum operador de comparação? Ou uma abreviação para `if-else`? Tentei pesquisar na internet, mas só encontrei explicações gerais em inglês que não entendi completamente.
Vocês podem explicar em palavras simples, de preferência com exemplos? Quando devo usar isso? E há diferença entre `??` e o operador ternário `?:`? Desde já agradeço! Estou escrevendo uma aplicação console simples onde preciso obter o nome do usuário e, se não for fornecido (null), exibir "Convidado". Aqui está meu código atual, que parece muito verboso:
```csharp
string userName = Console.ReadLine();
string name;
if (userName != null)
{
name = userName;
}
else
{
name = "Convidado";
}
Cons