Estava vendo a aula de genéricos e acredito que seria interessante adicionar um vídeo a mais explicando a restrição de tipo genérico após a aula Null em classes genéricas.
Digo isso porque é possível ter apontamentos para referência de Null em Generics usando a restrição de tipo genérico para Classe.
Por exemplo o código abaixo não compila porque T pode ser um Tipo de valor não nulo:
using System;
namespace ByteBank.SistemaAgencia
{
public class Lista<T>
{
public Lista()
{
}
public TentaAnular(T item)
{
item = null;
}
}
}
Mas ao mudar este código para:
using System;
namespace ByteBank.SistemaAgencia
{
public class Lista<T> where T : class
{
public Lista()
{
}
public TentaAnular(T item)
{
item = null;
}
}
}
O problema desaparece, visto que toda classe aponta para uma referência e pode ser nula.
A restrição pode ser usada inclusive para restringir a assinatura de um construtor em branco usando new() ou ainda restringir para uma interface, o que permitiria por exemplo criar uma classe que instância objetos a partir de um arquivo de texto ou uma string por exemplo.
Acredito que seria uma boa adição ao conteúdo deste curso.