2

私はmsdnでジェネリックを読んでいました

を使用して、次のように単純なジェネリック クラスを定義できます。T for type

class Generics<T> 
    {
        List<T> list = new List<T>();
        public void fun(T no1, T no2)
        {
            list.Add(no1);
        }
    }

X for type次に、次のようにタイプに別の変数を使用しようとしましたが、うまくいきました

class Generics<X> 
    {
        List<X> list = new List<X>();
        public void fun(X no1, X no2)
        {
            list.Add(no1);
        }
    }

C#で型に任意の変数を使用できる理由と、このアプローチの利点は何かを知りたいです

4

5 に答える 5

10

コードを読みやすくするためだけに、ジェネリック型の単なるエイリアスではありません。見てみましょうDictionary<TKey, TValue>- よりもはるかに明確ですDictionary<T, X>

于 2013-06-20T13:03:46.553 に答える
0

ジェネリック パラメータには名前が必要です。そうしないと参照できません。たとえば、 fun(T no1, T no2) メソッドを他にどのように記述できますか? 実際のクラスの名前を使用することはできませんが (それが何であるかわからないため、ジェネリックを使用しているのはそのためです!)、何らかの方法でそれを参照する必要があるため、次のような名前を割り当てます。未知のクラス、この場合は T を参照します。

T が頻繁に使用される理由については、単なる慣例です。T は (t)ype を表します。ただし、必要なものは何でも使用できます。クラスに複数のジェネリック パラメータがある場合、GenericClass<T, U, V> のように表示されることがよくありますが、これは T からアルファベット順に継承することに基づく規則にすぎません。多くの場合、より意味のある名前が表示されます。たとえば、ジェネリック ディクショナリ クラスを Dictionary<TKey, TValue> として定義して、型が何に使用されているかをより明確にすることができます。

于 2013-06-20T13:12:39.197 に答える
0

T または X は単なる「タイプ」変数の表現です。T または X という名前の既知のタイプがない限り、他のものを使用できます。

于 2013-06-20T13:12:55.557 に答える