当前位置:网站首页>Classe générique, interface générique

Classe générique, interface générique

2022-01-15 02:08:15 La lave de Rodinia

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace generic
{

class Test<T1, T2>//Construire une classe générique,T1,T2Pour les paramètres de type
{
    public T1 var1;
    public T2 var2;
    public void print()
    {
        Console.WriteLine("var1:{0}    var2:{1}", var1 , var2);
    }
}

class Program
{
    static void Main(string[] args)
    {
        //Deux façons d'instancier,Même effet
        Test<int,string> first = new Test<int, string>();//intEtstringEst un argument de type,Correspondant séparémentT1,T2
        var second = new Test<string, int>();

        first.var1 = 123; //firstMoyenne,var1Seulement pourintType, Bien sûr, il est également possible de convertir un type de force en un autre type 
        first.var2 = "Good Luck!";  //Seulement pourstringType,Ibid.
        first.print();

        second.var1 = "hello world";
        second.var2 = 345;
        second.print();
        Console.ReadKey();
    }
}

}

Interface générique

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace generic
{
interface Test
{
void Print(T value);
}

/*
 *  Les implémentations d'interface génériques doivent être uniques , Il faut s'assurer que la combinaison des paramètres de type ne génère plus deux interfaces dupliquées dans le type 
 * class Simple<S> : Test<int>, Test<S> C'est mal,Parce queSÇa pourrait êtreintType
 *  Vous pouvez également implémenter des interfaces génériques dans des types non génériques 
 * class Simple : Test<int>, Test<string>
 */
class Simple<S> : Test<S>
{
    public void Print(S value)
    {
        Console.WriteLine("value is {0}",value);
    }
}

class Program
{
    static void Main(string[] args)
    {
        var IntSimp = new Simple<int>();
        var StrSimp = new Simple<string>();

        IntSimp.Print(123);
        StrSimp.Print("hello world");
        Console.ReadKey();
    }
}

}

版权声明
本文为[La lave de Rodinia]所创,转载请带上原文链接,感谢
https://chowdera.com/2022/01/202201080558307523.html

随机推荐