1. ホーム
  2. c#

[解決済み] 型'T'の値を変換することはできません。

2022-04-23 08:55:49

質問

これは初歩的な質問だと思いますが、意外にもgoogleは答えを出してくれませんでした。

私はこのような人工的な方法を持っています。

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

    return t;
}

C++のバックグラウンドを持っている私は、これが動作することを期待していました。しかし、上記の両方の代入に対して、"Cannot implicitly convert type 'T' to string" と "Cannot convert type 'T' to string" でコンパイルに失敗しています。

私は何か概念的に間違ったことをしているか、単に間違った構文を持っているかのどちらかです。この問題を解決するのを助けてください。

ありがとうございました。

解決方法は?

の中にあっても if ブロックがあることをコンパイラは知りません。 Tstring .

したがって、キャストさせません。(キャストできないのと同じ理由で DateTimestring )

にキャストする必要があります。 object は、(どの T にキャストすることができます)、そしてそこから string (このため object をキャストすることができます。 string ).

例えば

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