Avatar ·

O que é null/nil em C# e como trabalhar com ele?

Olá a todos! Comecei a estudar C# e me deparei com o conceito de null. Em outras linguagens, encontrei nil ou None, mas em C# parece ser a mesma coisa. Expliquem, por favor, o que exatamente significa null no contexto de tipos por referência e como trabalhar corretamente com ele?

Tentei escrever um código simples, mas recebo NullReferenceException. Aqui está um exemplo:

public class Person { public string Name { get; set; } }

Person person = null;
Console.WriteLine(person.Name); // Erro: Object reference not set to an instance of an object.

Esperava que person.Name retornasse uma string vazia ou null sem exceção. Como evitar esses erros? Tentei verificar com if (person != null), mas isso polui o código. Ouvi falar sobre ?. (null-conditional operator) e ?? (null-coalescing operator) — como aplicá-los corretamente? Também tenho interesse em saber a diferença entre null e default.