私は職場で小さなクラスライブラリを作成しています。しかし、ジェネリックでわからないことがあります: ジェネリック型パラメータを使用して、その型パラメータを特定の基本クラスまたはインターフェイスに制約する必要があるのはなぜですか。ここで.NET(基本クラスとインターフェイスの制約)で型パラメータの制約がある点
は、私が何を意味するかの例です:
public class MyGenericClass<T> where T : SomeBaseClass
{
private T data;
}
そしてここでは、ジェネリック医薬品
public class MyClass
{
private SomeBaseClass data;
}
ずに実装だそうなら、私はadvatageが表示されていない(同じこれら二つの定義ですここでジェネリックを使用しています)?
もしそうでない場合は、ここでジェネリックスを使用するとどんなメリットがありますか?
です。しかしジェネリッククラスに関しては、実際の違いはありません.... OK、ありがとう! –
@AviShilon:ほとんどの場合、いいえ。ジェネリック型制約と通常の静的型定義との唯一の違いは、ジェネリック型制約が 'class'と' struct'キーワードを指定して、それぞれ参照型または値型に制約することができることです。これは通常の静的型付け構文では表現できません。 'GetType()'(これは 'T'よりも派生しているかもしれませんし、値が' nullの場合はまったく動作しません)に依存せずに 'typeof(T)'のようなことを*行うこともできます')。 –