我有一个问题,包装我的头为什么没有编译以下代码片段。为什么我不能将`this`强制转换为泛型?
的Visual Studio标志的第一个具有:
无法将类型 'SOMETYPE' 到 'T'
演员是多余的。
using System;
public class SomeClass {
public T Coerce<T>() {
if (typeof(T) == typeof(SomeClass))
return (T)this; // <- Error CS0030
else throw new InvalidCastException();
}
}
拆除 “多余” 剧组,但只是改变了错误:
无法隐式转换类型 'SomeOtherClass' 到 'T'
using System;
public class SomeOtherClass {
public T Coerce<T>() {
if (typeof(T) == typeof(SomeOtherClass))
return this; // <- Error CS0029
else throw new InvalidCastException();
}
}
如果你解释了你在这里实现的目标,这可能会有所帮助。 –
'return(T)(object)this;' – PetSerAl
你为什么要这样做? –