2

メソッドがジェネリックを使用して受け入れるデータ型を組み込み型に制限したいと思います。

組み込み型: http://msdn.microsoft.com/en-us/library/ya5y69ds(v=vs.80).aspx

リストは値/参照型とは異なります。そして、すべての値型ではなく組み込みのみをサポートしたいと思います。また、ofc も参照型である文字列をサポートしたいと考えています。

これは可能ですか?

編集:

制約を使用すると、次のような値の型に制限できます。

T GetObject<T> where T: struct;

ただし、これは文字列の通過を許可しません。

4

2 に答える 2

2

ジェネリックで行うことはできません。

これを実行してコンパイル時のチェックを維持する必要がある場合、唯一のオプションは、すべての組み込み型がカバーされるように、メソッドのオーバーロードにさまざまなパラメーター型を提供することです。

于 2012-10-18T11:54:35.210 に答える
0

いいえ、残念ながらそれは不可能です。

あなたができると思う最も近いものは以下の通りです:

T GetObject<T>()
{
    if (!(typeof(T) is typeof(int)
        || typeof(T) is typeof(uint)
        ...
        || typeof(T) is typeof(string)))
    {
        //Custom exception class for this purpose
        throw new TypeArgumentException("Invalid type parameter \"T\".");
    }

    ...
}

それほど良くはありませんが、仕事はします。

于 2012-10-18T11:48:29.707 に答える