这可能是一个新手问题,但谷歌出人意料地没有提供答案。
我有这个相当人为的方法
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)
if
T
string
DateTime
您需要转换为object, (任何人T都可以转换为),然后从那里转换为string(因为object可以转换为string)。 例如:
object
T newT1 = (T)(object)"some text"; string newT2 = (string)(object)t;