0

私はこれをしたい:

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

これは可能ですか?

4

1 に答える 1

1

それを2つの別々の方法にすることが無限に望ましいでしょう。

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 に答える