Вероятно, это вопрос новичка, но на удивление Google не дал ответа.
У меня есть этот довольно искусственный метод
T HowToCast<T>(T t)
{
if (typeof(T) == typeof(string))
{
T newT1 = "some text";
T newT2 = (string)t;
}
return t;
}
Исходя из опыта C ++, я ожидал, что это сработает. Тем не менее, он не может быть скомпилирован с «Не удается неявно преобразовать тип« T »в строку» и «Не удается преобразовать тип« T »в строку» для обоих вышеупомянутых назначений.
Я либо делаю что-то концептуально неправильно, либо просто у меня неправильный синтаксис. Пожалуйста, помогите мне разобраться с этим.
Спасибо!
typeof(T) == typeof(string)
разрешается во время выполнения, а не во время компиляции. Таким образом, следующая строка в блоке недействительна.