ホームページ > バックエンド開発 > C++ > C# でジェネリック型 'T' を文字列に安全にキャストする方法

C# でジェネリック型 'T' を文字列に安全にキャストする方法

DDD
リリース: 2024-12-29 02:59:14
オリジナル
345 人が閲覧しました

How to Safely Cast a Generic Type 'T' to a String in C#?

C# でのジェネリック型の変換

次のような質問が開発者の間で頻繁に起こります。「エラー: 型 'T' の値はに変換できません」 '弦'。"この問題は、ジェネリック型 'T' を特定の具象型にキャストしようとしたときに発生します。

次の方法を考えてみましょう:

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

    return t;
}
ログイン後にコピー

C バックグラウンドから来ているにもかかわらず、このコードは失敗します。コンパイル。コンパイラは、「型 'T' を文字列に暗黙的に変換できません」や「型 'T' を文字列に変換できません」などのエラーをスローします。

問題の理解

ここでの重要な問題は、コンパイラが「T」の特定の型を判断できないことです。 'T' が文字列であるかどうかをチェックする if ブロック内にあるとしても、コンパイラはコンパイル時にこの情報を持ちません。

解決策

解決するにはこの問題では、「オブジェクト」への中間キャストを実行する必要があります。任意のジェネリック型は「object」にキャストできるため、「object」から目的の具象型 (この場合は string) にキャストできます。

修正されたコードは次のとおりです:

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;
ログイン後にコピー

「object」への中間キャストを実行することで、変換を明示的に指定し、コンパイラーが操作を正しく実行できるようにします。

以上がC# でジェネリック型 'T' を文字列に安全にキャストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート