C# genéricos
genérico significa a forma geral, não específica. Em C#, genérico significa não específico para um determinado tipo de dados.
C# permite-lhe definir classes genéricas, interfaces, classes abstractas, campos,métodos, métodos estáticos, propriedades, eventos, delegados e operadores que utilizem o parâmetro tipo e sem o tipo específico de dados. Um parâmetro de tipo é uma substituição para um determinado tipo especificado ao criar uma instância do tipo genérico.
um tipo genérico é declarado especificando um parâmetro de tipo em um parêntesis angular após um nome de tipo, e.g., em que T
é um parâmetro de tipo.
classe genérica
As classes genéricas são definidas usando um parâmetro de tipo entre parêntesis de ângulo após o nome da classe. O seguinte define uma classe genérica.
Acima DataStore
é uma classe genérica., T
é chamado de parâmetro de tipo, que pode ser usado como um tipo de campos, propriedades, parâmetros de método, tipos de retorno, e os delegados DataStore
classe. Por exemplo, Data
é propriedade genérica porque temos usado um parâmetro de tipo T
como seu tipo em vez do tipo de dados específico.
T
como parâmetro de tipo. Você pode dar qualquer nome a um parâmetro do tipo., Geralmente, T
é usado quando existe apenas um parâmetro tipo. Recomenda-se a utilização de um nome do parâmetro do tipo mais legível de acordo com o requisito: TSession
, TKey
, TValue
etc. Saiba mais sobre as Diretrizes de nomenclatura de Parâmetros de tipo Você também pode definir vários tipos de parâmetros separados por uma vírgula.
instanciando a classe genérica
pode criar uma instância de classes genéricas, especificando um tipo real entre parêntesis de ângulo., O seguinte cria uma instância da classe genérica DataStore
.
acima, especificámos o string
tipo nos parêntesis angulares ao criar uma instância. Assim, T
será substituído com um string
escrever onde T
é usado em toda a classe em tempo de compilação. Portanto, o tipo de Data
property would be a string
.
a figura seguinte ilustra como os genéricos funcionam.,
pode atribuir um valor de texto à Data
propriedade. Tentar atribuir outros valores que não string resultará em um erro de tempo de compilação.
pode especificar os diferentes tipos de dados para diferentes objectos, como mostrado abaixo.
características genéricas da classe
- Uma classe genérica aumenta a reutilização. Quanto mais parâmetros de tipo significam mais reutilizável ele se torna., No entanto, demasiada generalização torna o código difícil de entender e manter.
- Uma classe genérica pode ser uma classe base para outras classes genéricas ou não genéricas ou classes abstratas.
- Uma classe genérica pode ser derivada de outras interfaces genéricas ou não genéricas, classes ou classes abstratas.
campos genéricos
uma classe genérica pode incluir campos genéricos. No entanto, não pode ser iniciado.
A seguir declara uma matriz genéricos.,
Métodos Genéricos
Um método declarado com o tipo de parâmetros para o seu tipo de retorno ou parâmetros é chamado um método genérico.
acima, os métodos
e o GetData()
são métodos genéricos. O tipo de dados Real do parâmetro item
será especificado no momento da instanciação do id
classe, como mostrado abaixo.,
o tipo de parâmetro genérico pode ser usado com múltiplos parâmetros com ou sem parâmetros não genéricos e tipo de retorno. As seguintes informações são um método genérico de sobrecarga válido.
uma classe não-genérica pode incluir métodos genéricos, especificando um parâmetro de tipo entre parêntesis de ângulo com o nome do método, como mostrado abaixo.as vantagens dos genéricos
- Os genéricos aumentam a reutilização do Código. Você não precisa escrever código para lidar com diferentes tipos de dados. os genéricos são seguros para o tipo., Você obtém erros de tempo de compilação se você tentar usar um tipo de dados diferente do especificado na definição.
- Genérico tem uma vantagem de desempenho porque remove as possibilidades de boxe e descompressão.