0

我想做这个:

public void MyMethod<T>(T myArg) where T: DataTable, String
{
    ...
}

这可能吗?

4

1 回答 1

1

将其设为两种不同的方法将是无限可取的。

public void MyMethod(DataTable myArg)
{
    ...
}

public void MyMethod(String myArg)
{
    ...
}

或者,如果是通用的(我不确定为什么在这种情况下需要通用)

public void MyMethod<T>(T myArg) where T: DataTable
{
    ...
}

public void MyMethodStr<T>(T myArg) where T: string
{
    ...
}

或更糟糕的情况,如果不是这些类型之一,则抛出错误。这是最不可取的,因为它会在运行时抛出而不是编译。

public void MyMethod<T>(T myArg)
{
    if(myArg is String == false && myString is DataTable == false)
        throw new InvalidArgumentException(...);
}

但除此之外,没有。

于 2012-11-08T21:31:15.113 回答