É provável que seja uma pergunta iniciante, mas o Google surpreendentemente não forneceu uma resposta.
Eu tenho esse método bastante artificial
T HowToCast<T>(T t)
{
if (typeof(T) == typeof(string))
{
T newT1 = "some text";
T newT2 = (string)t;
}
return t;
}
Vindo de um background em C ++, esperava que isso funcionasse. No entanto, ele falha ao compilar com "Não é possível converter implicitamente o tipo 'T' em cadeia de caracteres" e "Não é possível converter o tipo 'T' em cadeia de caracteres" para as duas atribuições acima.
Ou estou fazendo algo conceitualmente errado ou apenas tenho a sintaxe errada. Por favor, ajude-me a resolver este.
Obrigado!
typeof(T) == typeof(string)
é resolvida no tempo de execução, não no tempo de compilação. Portanto, a seguinte linha no bloco é inválida.