这可能是一个新手问题,但是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
块,编译器不知道T
是string
。
因此,它不允许您铸造。(出于相同的原因,您无法施放DateTime
到string
)
你需要铸造object
,(任何T
可以施放到),然后从那里到string
(自从object
可以铸造string
)。
例如:
T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;