O melhor tutorial C # Generics (Genéricos) em 2024. Neste tutorial você pode aprender Genéricos (genérico) recursos,método genérico (genérico),Genérico (Generic) encomendado,
Genérico (Generic) permite atrasar a preparação do tipo de dados dos elementos de classe ou de programação método da especificação, até a hora de realmente usar o programa.Em outras palavras, ele permite que você escrever uma classe genérica ou método que pode trabalhar com qualquer tipo de dados.
Você pode escrever a classe especificação ou método, substituindo os tipos de dados do parâmetro. Quando a função é chamada de um construtor ou método compilador encontra uma classe que irá gerar o código para lidar com o tipo de dados especificado. O seguinte exemplo simples irá ajudá-lo a compreender este conceito:
using System; utilizando System.Collections.Generic; GenericApplication namespace { classe pública MyGenericArray <T> { T [] array privado; MyGenericArray público (int size) { array = new T [size + 1]; } pública T getItem (int index) { retornar array [índice]; } setItem public void (int índice, o valor T) { array [index] = value; } } Tester classe { static void Main (string [] args) { // Declara uma matriz de inteiros MyGenericArray <int> intArray = new MyGenericArray <int> (5); // Defina o valor para (int c = 0; c <5; c ++) { intArray.setItem (C, C * 5); } // Obter valor para (int c = 0; c <5; c ++) { Console.Write (intArray.getItem (c) + ""); } Console.WriteLine (); // Declara uma matriz de caracteres MyGenericArray <char> charArray = new MyGenericArray <char> (5); // Defina o valor para (int c = 0; c <5; c ++) { charArray.setItem (c, (char) (c + 97)); } // Obter valor para (int c = 0; c <5; c ++) { Console.Write (charArray.getItem (c) + ""); } Console.WriteLine (); Console.ReadKey (); } } }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
05101520 abcde
Uso de genéricos é um programa para melhorar as capacidades técnicas, especificamente nos seguintes aspectos:
No exemplo acima, temos utilizado a classe genérica, podemos declarar um genérico parâmetros de tipo de método. O programa a seguir ilustra esse conceito:
using System; utilizando System.Collections.Generic; GenericMethodAppl namespace { Programa de classe { Trocar static void <T> (LHS ref T, rhs ref T) { temperatura T; temp = lhs; lhs = rhs; rhs = temperatura; } static void Main (string [] args) { int a, b; char c, d; a = 10; b = 20; c = 'I'; d = 'V'; // TV antes de o valor de troca Console.WriteLine ( "valores Int antes de chamar swap:"); Console.WriteLine ( "a = {0}, b = {1}", a, b); Console.WriteLine ( "valores Char antes de chamar swap:"); Console.WriteLine ( "C = {0}, d = {1}", c, d); // Troca de chamadas Trocar <int> (ref a, ref b); Trocar <char> (ref c, d ref); // Após uma troca de Console.WriteLine valor de visualização ( "valores Int depois de chamar swap:"); Console.WriteLine ( "a = {0}, b = {1}", a, b); Console.WriteLine ( "valores Char depois de chamar swap:"); Console.WriteLine ( "C = {0}, d = {1}", c, d); Console.ReadKey (); } } }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
valores int antes de swap chamando: a = 10, b = 20 valores Char antes de swap chamando: c = I, d = V valores int depois de chamar de swap: a = 20, b = 10 valores Char depois de chamar de swap: C = V, d = I
Você pode definir através de parâmetros de tipo delegado genérico. Por exemplo:
delegado T NumberChanger <T> (T n);
O exemplo a seguir demonstra o uso da comissão:
using System; utilizando System.Collections.Generic; delegado T NumberChanger <T> (T n); GenericDelegateAppl namespace { classe TestDelegate { int num estática = 10; public static int AddNum (int p) { Num + = p; retornar num; } public static int MultNum (int q) { Num * = q; retornar num; } int public static getNum () { retornar num; } static void Main (string [] args) { // Criar uma instância de delegado NumberChanger <int> nc1 = new NumberChanger <int> (AddNum); NumberChanger <int> NC2 = new NumberChanger <int> (MultNum); // Chamar o método utilizando um nc1 delegado objeto (25); Console.WriteLine ( "Valor de Num: {0}", getNum ()); NC2 (5); Console.WriteLine ( "Valor de Num: {0}", getNum ()); Console.ReadKey (); } } }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
Valor das Num: 35 Valor das Num: 175