Pergunta

Recentemente, li um termo "restrição do tipo nu" no contexto de genéricos. O que isto significa? Onde usamos isso?

Foi útil?

Solução

A partir de Msdn:

Constraint          Description

where T : U         The type argument supplied for T must be or derive from
                    the argument supplied for U. This is called a naked type
                    constraint.

Quando um parâmetro de tipo genérico é usado como uma restrição, ele é chamado de restrição de tipo nu. As restrições do tipo nu são úteis quando uma função de membro com seu próprio parâmetro de tipo deve restringir esse parâmetro ao parâmetro de tipo do tipo contendo, conforme mostrado no exemplo a seguir:

class List<T>
{
    void Add<U>(List<U> items) where U : T {/*...*/}
}

Outras dicas

Como um aparte, é bizarro para mim que esse termo um tanto obsoleto conseguiu entrar na documentação do MSDN. Certamente não chamamos essas restrições de "restrições do tipo nu" na equipe do compilador C# e fiquei chocado, chocado! Descobrir alguns anos atrás, é o que a documentação dizia. Geralmente os chamamos de "restrições de parâmetros de tipo". Não tenho idéia de como esse termo entrou na documentação em primeiro lugar; Provavelmente há uma história interessante lá.

"Quando um parâmetro de tipo genérico é usado como uma restrição, ele é chamado de restrição de tipo nu. As restrições do tipo nu são úteis quando uma função de membro com seu próprio parâmetro de tipo precisa restringir esse parâmetro ao parâmetro de tipo do tipo contendo"

http://msdn.microsoft.com/en-us/library/d5x73970.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top