Você terá que seguir esses passos Primeiro, examine as seguintes classes. Classes Obj e Gen desempenhar exactamente as mesmas tarefas, mas Obj usa a classe de objeto para permitir qualquer tipo para ser armazenado em seu campo, enquanto Gen usa os genéricos:
'VB
Class Obj
V1 Pública As Object
V2 Pública As Object
Public Sub New (ByVal _V1 As Object, ByVal _V2 As Object) V1 = _V1
V2 = _V2
End Sub
End Class
Class Gen (Of T, U) V1 Pública Como T Pública V2 Como U
Public Sub New (ByVal _V1 Como T, ByVal _V2 como U) V1 = _V1
V2 = _V2
End Sub
Class End
//C #
class Obj
{
Objeto público t;
Objeto público u;
pública Obj (_t Object, _u Object)
{
t = _t;
= u _u;
}
}
classe Gen
{
T público t;
pública U u;
pública Gen (T _t, U _u)
{
t = _t;
= u _u;
}
}
Como você pode ver, a classe Obj tem dois membros do tipo Object.
A classe Gen tem dois membros de campo do tipo T e U. O código consumir determina os tipos de T e U. Dependendo de como o código consumindo usa a classe Gen, T e U poderia ser uma string, um int, uma classe personalizada, . ou qualquer combinação destes
Há uma limitação significativa para a criação de uma classe genérica (sem restrições, como discutido na seção "How to Use restrições", mais adiante neste capítulo): código genérico só é válida se ele compila para sempre y instância construída possível do genérico, se um Int, uma string, ou qualquer outra classe.
Essencialmente, você está limitado às capa- da classe Object base quando escrever código genérico. Portanto, você poderia chamar o ToString método GetHashCode ou dentro de sua classe, mas você não poderia usar o + ope- ator ou o operador>. Essas mesmas restrições não se aplicam ao código de consumir porque o código consumindo declara um tipo específico para o genérico.
Como consumir um tipo genérico
Quando você consumir um tipo genérico, você deve especificar os tipos para todos os genéricos utilizados.
Considere o seguinte código do aplicativo Console, que usa as classes Gen e Obj:
'VB
' Adicionar duas seqüências usando a classe Obj
oa Dim obj = New Obj ("Olá", "World!") Console.WriteLine (CType (oa.V1, String) + CType (oa.V2, String))