Em C #, o que where T : class
significa?
Ou seja.
public IList<T> DoThis<T>() where T : class
Simplificando, isso restringe o parâmetro genérico a uma classe (ou mais especificamente a um tipo de referência que pode ser um tipo de classe, interface, delegado ou matriz).
Consulte este artigo do MSDN para obter mais detalhes.
É uma restrição de tipo genérico . Nesse caso, significa que o tipo genérico
T
deve ser um tipo de referência (classe, interface, delegado ou tipo de matriz).fonte
É uma restrição de tipo
T
, especificando que deve ser uma classe.A
where
cláusula pode ser usada para especificar outras restrições de tipo, por exemplo:Para obter mais informações, consulte a página do MSDN na
where
cláusula ou restrições genéricas de parâmetros .fonte
where T : class, IComparable, new()
Isso restringe
T
a tipos de referência . Você não poderá colocar tipos de valor (sestruct
primitivos, excetostring
) lá.fonte
significa que o tipo usado como
T
quando o método genérico é usado deve ser uma classe - ou seja, não pode ser uma estrutura ou um número incorporado comoint
oudouble
fonte
where T: class
literalmente significa issoT has to be a class
. Pode ser qualquer tipo de referência. Agora sempre que algum código chama oDoThis<T>()
método que deve fornecer uma classe para substituir T . Por exemplo, se eu chamar seuDoThis<T>()
método, terei que chamá-lo da seguinte maneira:Se o seu método for semelhante ao seguinte:
Então, sempre que T aparecer no seu método, ele será substituído pelo MyClass. Portanto, o método final que o compilador chama terá a seguinte aparência:
fonte
new T()
não é possível comwhere T : class
. você precisa especificarwhere T: new()
para poder fazê-lo.Isso é chamado de restrição de parâmetro de tipo. Efetivamente, restringe o tipo T.
Restrições nos parâmetros de tipo (Guia de Programação em C #)
fonte
T representa um tipo de objeto, implica que você pode fornecer qualquer tipo de. IList: se IList s = new IList; Agora s.add ("Sempre aceite string.").
fonte
Aqui, T refere-se a uma classe e pode ser um tipo de referência.
fonte
'T' representa um tipo genérico. Isso significa que ele pode aceitar qualquer tipo de classe. O seguinte artigo pode ajudar:
fonte