代码之家  ›  专栏  ›  技术社区  ›  SledgeHammer

泛型中可以有可选类型吗?

c#
  •  1
  • SledgeHammer  · 技术社区  · 8 年前

    我见过几个几乎相似的问题,但不完全是我要问的。

    假设:

    class MyBaseClass
    {
    }
    

    我还拥有:

    class MyClass<T> : MyBaseClass
    {
        void SomeFunc(T t1, T t2)
        {
        } 
    }
    

    通常t1和t2应为同一类型。然而,我遇到了一个边缘情况,而它们不是,因此我需要一个:

    class MyClass<T1, T2> : MyBaseClass
    {
    }
    

    是否可以只使用T1/T2版本,并在默认情况下将T2标记为=T1,除非指定了它?

    现在我有两个独立的班。。。只是想知道是否有任何合成糖可以将它们结合成一个?

    1 回复  |  直到 8 年前
        1
  •  7
  •   Sergey Kalinichenko    8 年前

    可以导出一个参数 MyClass<T>

    class MyBaseClass {
    }
    
    class MyClass<T1,T2> : MyBaseClass {
        void SomeFunc(T1 t1, T2 t2) {
        } 
    }
    
    class MyClass<T> : MyClass<T,T> {
    }