这可能是一个新手问题,但是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)
if
T
string
DateTime
您需要转换为object,(任何人T都可以转换为),然后从那里转换为string(因为object可以转换为string)。 例如:
object
T newT1 = (T)(object)"some text"; string newT2 = (string)(object)t;