Latest web development tutorials

C # Generics (Generic)

Générique (Generic) vous permet de retarder la préparation du type des éléments de la classe ou de la méthode de programmation de la spécification des données, jusqu'à ce qu'il est temps d'utiliser effectivement le programme.En d'autres termes, il vous permet d'écrire une classe générique ou d'une méthode qui peut fonctionner avec tout type de données.

Vous pouvez écrire la classe de spécification ou de la méthode en remplaçant les types de données de paramètre. Lorsque la fonction est appelée un constructeur ou une méthode compilateur rencontre une classe qui va générer du code pour gérer le type de données spécifié. L'exemple simple suivant vous aidera à comprendre ce concept:

using System;
using System.Collections.Generic;

namespace GenericApplication
{
    MyGenericArray public class <T>
    {
        T réseau privé [];
        MyGenericArray publique (int size)
        {
            array = new T [size + 1];
        }
        publique T getItem (int index)
        {
            return array [index];
        }
        setItem public void (int index, la valeur T)
        {
            array [index] = valeur;
        }
    }
           
    Testeur de classe
    {
        static void Main (string [] args)
        {
            // Déclare un tableau d'entiers MyGenericArray <int> intArray = new MyGenericArray <int> (5);
            // Définissez la valeur de (int c = 0; c <5; c ++)
            {
                intArray.setItem (c, c * 5);
            }
            // Obtenir la valeur pour (int c = 0; c <5; c ++)
            {
                Console.Write (intArray.getItem (c) + "");
            }
            Console.WriteLine ();
            // Déclare un tableau de caractères MyGenericArray <char> charArray = new MyGenericArray <char> (5);
            // Définissez la valeur de (int c = 0; c <5; c ++)
            {
                charArray.setItem (c, (char) (c + 97));
            }
            // Obtenir la valeur pour (int c = 0; c <5; c ++)
            {
                Console.Write (charArray.getItem (c) + "");
            }
            Console.WriteLine ();
            Console.ReadKey ();
        }
    }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

05101520
abcde

caractéristiques génériques (Generic)

L'utilisation de médicaments génériques est un programme visant à renforcer les capacités techniques, en particulier dans les aspects suivants:

  • Il vous aide à maximiser la réutilisation du code, le type de protection de la sécurité et de l'amélioration des performances.
  • Vous pouvez créer un générique classes de collection. bibliothèque de classes .NET Framework contient plusieurs nouvelles classes de collection générique dans l'espace de nomsSystem.Collections.Generic.Vous pouvez utiliser ces classes de collection génériques au lieu des classes de collectionSystem.Collections.
  • Vous pouvez créer vos propres interfaces génériques, classes génériques, méthode générique des événements génériques et délégué générique.
  • Vous pouvez contraindre la classe générique pour accéder à des types de données spécifiques.
  • À propos des types de données génériques utilisés dans le type d'informations peuvent être obtenues au moment de l'exécution en utilisant la réflexion.

Méthode Générique (Generic)

Dans l'exemple ci-dessus, nous avons utilisé la classe générique, nous pouvons déclarer un générique des paramètres de type de méthode. Le programme suivant illustre ce concept:

using System;
using System.Collections.Generic;

GenericMethodAppl d'espace de noms
{
    Programme de classe
    {
        Swap static void <T> (ref T lhs, ref T rhs)
        {
            température T;
            temp = lhs;
            lhs = rhs;
            rhs = température;
        }
        static void Main (string [] args)
        {
            int a, b;
            char c, d;
            a = 10;
            b = 20;
            c = 'I';
            d = 'V';

            // Affichage avant la Console.WriteLine de la valeur d'échange ( "valeurs Int avant d'appeler swap:");
            Console.WriteLine ( "a = {0} b = {1}", a, b);
            Console.WriteLine ( "valeurs de Char avant d'appeler swap:");
            Console.WriteLine ( "c = {0}, j = {1}", c, d);

            // Échange d'appel
            Swap <int> (ref a, ref b);
            Swap <char> (ref c, ref d);

            // Après un échange de Console.WriteLine de valeur d'affichage ( "valeurs Int après avoir appelé swap:");
            Console.WriteLine ( "a = {0} b = {1}", a, b);
            Console.WriteLine ( "valeurs de Char après avoir appelé swap:");
            Console.WriteLine ( "c = {0}, j = {1}", c, d);
            Console.ReadKey ();
        }
    }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Les valeurs Int avant permutation d'appel:
a = 10, b = 20
valeurs Char avant échange appelant:
c = I, d = V
Les valeurs Int après l'appel de swap:
a = 20, b = 10
valeurs Char après l'appel de swap:
c = V, d = I

Générique (Generic) commandé

Vous pouvez définir par le biais des paramètres de type délégué générique. Par exemple:

délégué T NumberChanger <T> (T n);

L'exemple suivant illustre l'utilisation de la commission:

using System;
using System.Collections.Generic;

délégué T NumberChanger <T> (T n);
GenericDelegateAppl d'espace de noms
{
    classe TestDelegate
    {
        static int num = 10;
        public static int AddNum (int p)
        {
            num + = p;
            retour num;
        }

        public static int MultNum (int q)
        {
            num * = q;
            retour num;
        }
        int public static getNum ()
        {
            retour num;
        }

        static void Main (string [] args)
        {
            // Création d'une instance de délégué NumberChanger <int> NC1 = new NumberChanger <int> (AddNum);
            NumberChanger <int> nc2 = new NumberChanger <int> (MultNum);
            // Appel de la méthode utilisant un nc1 objet délégué (25);
            Console.WriteLine ( "Valeur de Num: {0}", getNum ());
            NC2 (5);
            Console.WriteLine ( "Valeur de Num: {0}", getNum ());
            Console.ReadKey ();
        }
    }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Valeur de Num: 35
Valeur de Num: 175