ホームページ >バックエンド開発 >C++ >C# のジェネリック型を特定の型にキャストできますか?

C# のジェネリック型を特定の型にキャストできますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-29 17:21:13545ブラウズ

Can Generic Types in C# Be Cast to Specific Types?

ジェネリック型は特定の型にキャストできますか?

最近のクエリで、C のバックグラウンドを持つプログラマーが、ジェネリック型を C# の特定の型にキャストする方法について支援を求めました。提供されたコード:

T HowToCast<T>(T t)
{
    if (typeof(T) == typeof(string))
    {
        T newT1 = "some text";
        T newT2 = (string)t;
    }

    return t;
}

コンパイラが「T」から文字列に変換できないというエラーを出し、コンパイルに失敗しました。

この問題を理解するには、コード内にあるにもかかわらず、それを認識する必要があります。 if ステートメントを使用すると、コンパイラは 'T' が文字列型であると推論できません。その結果、キャストは失敗します。これに対処するには、最初に 'T' を 'object' にキャストする必要があります。これは、任意の 'T' を 'object' にキャストしてから、さらに 'object' から 'string' などの目的の特定の型にキャストすることができるためです。

修正されたコード:

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;

は正しいアプローチを示しています。

以上がC# のジェネリック型を特定の型にキャストできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。