1
resposta

C#7 - Genêricos - restrição de tipo genérico

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.

1 resposta

Olá Rafael!

Muito legal sua contribuição!

Vou passar adiante e ver o que conseguimos fazer com essa adição.

Muito obrigado pela contribuição! Bons estudos!