小编典典

'T' 类型的值无法转换为

all

这可能是一个新手问题,但谷歌出人意料地没有提供答案。

我有这个相当人为的方法

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

    return t;
}

来自 C++ 背景,我预计这会起作用。但是,对于上述两个分配,它都无法使用“无法将类型 ‘T’ 隐式转换为字符串”和“无法将类型 ‘T’
转换为字符串”进行编译。

我要么在做一些概念上错误的事情,要么只是语法错误。请帮我解决这个问题。

谢谢!


阅读 206

收藏
2022-08-07

共1个答案

小编典典

即使它在if块内,编译器也不知道它Tstring.
因此,它不允许你施放。(出于同样的原因,你不能DateTime投到string

您需要转换为object, (任何人T都可以转换为),然后从那里转换为string(因为object可以转换为string)。
例如:

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;
2022-08-07