O que é a restrição “onde”
O 'onde' constraint é uma restrição de tipo genérico em C# que permite aos desenvolvedores especificar o parâmetro de tipo que um tipo genérico pode representar. A restrição é especificada usando o 'onde' palavra-chave seguida pelo parâmetro de tipo e a restrição, a sintaxe para usar o 'onde' restrição é a seguinte:
classe pública ClassName < T > onde T : limitação{
// Implementação da classe
}
Aqui o 'Nome da classe' representa o nome da classe com um parâmetro de tipo genérico “T” . O 'onde' palavra-chave especifica a restrição para o parâmetro de tipo e o 'limitação' é o tipo que o parâmetro de tipo deve representar.
Vamos dar um exemplo de uma classe genérica que aceita um parâmetro de tipo e retorna o valor mínimo de uma matriz de valores. Aqui o código usa o 'onde' restrição para especificar que o parâmetro de tipo deve ser um tipo numérico:
usando o sistema ;
classe pública MinValue < T > onde T : estrutura , IComparável , IConversível
{
public T GetMinValue ( T [ ] variedade )
{
se ( variedade == nulo || variedade. Comprimento == 0 ) {
lançar novo ArgumentException ( 'A matriz não pode ser nula ou vazia' ) ;
}
Tmin = variedade [ 0 ] ;
para ( int eu = 1 ; eu < variedade. Comprimento ; eu ++ ) {
se ( variedade [ eu ] . CompareTo ( min ) < 0 ) {
min = variedade [ eu ] ;
}
}
retornar min ;
}
}
Programa de classe pública
{
público estático vazio Principal ( )
{
int [ ] intArray = { 1 , 2 , 3 , 4 , 5 } ;
MinValue < int > intMinValue = novo MinValue < int > ( ) ;
int intMin = intMinValue. GetMinValue ( intArray ) ;
Console. WriteLine ( 'Valor mínimo de intArray: {0}' , intMin ) ;
dobro [ ] doubleArray = { 1.1 , 2.2 , 3.3 , 4.4 , 5.5 } ;
MinValue < dobro > doubleMinValue = novo MinValue < dobro > ( ) ;
dobro doubleMin = doubleMinValue. GetMinValue ( doubleArray ) ;
Console. WriteLine ( 'Valor mínimo de doubleArray: {0}' , doubleMin ) ;
}
}
Aqui, definimos uma classe genérica “Valor Mín” que aceita um parâmetro de tipo “T” e retorna o valor mínimo de uma matriz de valores. A seguir, utilizamos o 'onde' restrição para especificar que o parâmetro de tipo deve ser uma estrutura, implemente a interface IComparable e implemente a interface IConvertible. Essa restrição garante que apenas tipos numéricos sejam permitidos como parâmetros de tipo.
Conclusão
O 'onde' A restrição em C# é um recurso poderoso que permite aos desenvolvedores reforçar a segurança de tipo e evitar erros durante o tempo de execução. Ao usar essa restrição, você pode especificar o conjunto de tipos que um parâmetro de tipo genérico pode representar. Este artigo forneceu uma visão geral do 'onde' restrição em C# e demonstrou como usá-la com um código.