これはおそらく初心者の質問ですが、驚いたことに 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
にキャストできます)にキャストし、そこからstring
(object
は にキャストできるためstring
)にキャストする必要があります。
例:
T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;