Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 17968|Resposta: 0

[Fonte] C# onde análise de uso

[Copiar link]
Publicado em 12/07/2016 11:35:43 | | |

A cláusula onde é usada para especificar restrições de tipo que podem servir como variáveis para parâmetros de tipo definidos em declarações genéricas.
1. Restrições de interface.
Por exemplo, você pode declarar uma classe genérica MyGenericClass, de modo que o parâmetro de tipo T possa implementar a<T> interface IComparable:

classe pública<T> MyGenericClass onde T:IComparable { }

2. Restrição de classe base: Indica que um tipo deve usar a classe especificada como classe base (ou a própria classe) para ser usada como parâmetro de tipo para esse tipo genérico.
Uma vez que tal restrição é usada, ela deve aparecer antes de todas as outras restrições sobre o tipo de parâmetro.
Classe MyClassy<T, U>
onde T : classe
onde U : struct
{
}

A cláusula 3.where também pode incluir restrições de construtor.
Você pode usar o novo operador para criar uma instância de um parâmetro tipo; Mas o argumento do tipo deve ser restrito pela restrição do construtor new() para isso. A restrição new() informa o compilador que qualquer tipo de argumento fornecido deve ter um construtor acessível sem parâmetros (ou padrão). Por exemplo:
classe pública <T> MyGenericClass onde T: IComparable, new()
{
A linha a seguir não é possível sem a restrição nova():
Item T = novo T();
}
A restrição new() aparece no final da cláusula where.

4. Para múltiplos parâmetros de tipo, cada parâmetro de tipo usa uma cláusula where,
Por exemplo:
interface MyI { }
Dicionário da turma<TKey, TVal>
onde TKey: Comparável, IEnumerável
onde TVal: MyI
{
empty público Adicionar (chave TKey, TVal val)
{
}
}

5. Você também pode anexar restrições aos parâmetros de tipo de métodos genéricos, tais como:

bool público <T>MyMethod(T t) onde T : IMyInterface { }

Note que a sintaxe para descrever as restrições dos parâmetros de tipo é a mesma tanto para delegados quanto para métodos:

delegar T <T>MyDelegate() onde T : new()





Genérico onde

O Where genérico pode qualificar parâmetros de tipo. Existem várias maneiras.

·onde T : struct restringe o parâmetro de tipo que T deve herdar do System.ValueType.

·onde T: classe restringe o tipo O parâmetro T deve ser um tipo de referência, ou seja, não pode ser herdado do System.ValueType.

onde T : new() restringe o parâmetro de tipo T deve ter um construtor padrão

·onde T : NameOfClass restringe o parâmetro de tipo T deve herdar de uma classe ou implementar uma interface.

Esses qualificadores podem ser combinados, como: classe pública Ponto onde T : classe, IComparable, new()




Anterior:Classe de ajuda c# NHibernate
Próximo:c# http escuta threads com HttpListener
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com