是否可以在泛型中使用可选类型?

时间:2017-10-20 16:52:15

标签: c#

我已经看到了几个几乎类似的问题,但不完全是我在这里的目的。

假设:

class MyBaseClass
{
}

我也有:

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

通常t1和t2应该是相同的类型。但是,我碰到了一个他们不是的边缘情况,所以我需要一个:

class MyClass<T1, T2> : MyBaseClass
{
}

是否可以只使用T1 / T2版本并以某种方式将T2标记为=默认为T1,除非指定?

现在我有2个单独的课程...只是想知道是否有任何合成糖将它们组合成一个?

1 个答案:

答案 0 :(得分:7)

您可以从双参数类派生单参数MyClass<T>

class MyBaseClass {
}

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

class MyClass<T> : MyClass<T,T> {
}