这可能是一个新手问题,但是Google令人惊讶地没有提供答案。

我有这种相当人为的方法

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

    return t;
}

来自C ++背景,我期望这能起作用。但是,它无法与"不能将类型的t’转换为字符串"和"无法将类型的t"转换为上述任务的字符串。

我要么在概念上做错了什么,要么只是犯了错误的语法。请帮助我解决这个问题。

谢谢你!

答案

即使它在if块,编译器不知道Tstring
因此,它不允许您铸造。(出于相同的原因,您无法施放DateTimestring

你需要铸造object,(任何T可以施放到),然后从那里到string(自从object可以铸造string)。
例如:

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

来自: stackoverflow.com