我有这个方法:
public T GetInput<T>()
{
T result;
if( (typeof)T == Type.GetType("string"))
{
result = GetStringInput(); // returns a string
}
// Etc for a bunch of different types
}
我得到的错误是我无法隐式地将字符串转换为“T”。该函数的要点是能够获得任何指定类型的输入,并确保在返回之前对输入进行类型验证。想法?
答案 0 :(得分:5)
如果您确定它是正确的代码,则不能简单地使用字符串事件在编译时类型 T 上分配未确定的变量。编译器不允许它。要强制执行此操作,您可以执行以下操作:
result = (T)(object)GetStringInput();
这个双重演员会明确地告诉编译器你对这一行负责。
答案 1 :(得分:4)
result = (T)(object)GetStringInput();