'T' 型の値は「質問する」に変換できません

'T' 型の値は「質問する」に変換できません

これはおそらく初心者の質問ですが、驚いたことに Google では回答が得られませんでした。

私はかなり人工的な方法を持っています

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

    return t;
}

C++ の経験から、これが機能することを期待していました。しかし、上記の両方の割り当てで、「型 'T' を暗黙的に文字列に変換できません」および「型 'T' を文字列に変換できません」というエラーが発生し、コンパイルに失敗します。

概念的に何か間違っているか、単に構文が間違っています。これを解決するのにご協力ください。

ありがとう!

ベストアンサー1

ブロック内にあるにもかかわらずif、コンパイラは がTであることを認識しませんstring
したがって、キャストできません。(DateTimeにキャストできないのと同じ理由ですstring)

objectを(any はTにキャストできます)にキャストし、そこからstringobjectは にキャストできるためstring)にキャストする必要があります。
例:

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

おすすめ記事