关于“强制将泛型类型转换为T”,请参考此处
以下是示例:
private static T deserialize<T>(string streng) where T : class
{
XmlSerializer ser = new XmlSerializer(typeof(T));
StringReader reader = new StringReader(streng);
return ser.Deserialize(reader) as T;
}
并且
private static T deserialize<T>(string streng)
{
XmlSerializer ser = new XmlSerializer(typeof(T));
StringReader reader = new StringReader(streng);
return (T)ser.Deserialize(reader);
}
我习惯于进行object as Type
类型转换,所以当我发现无法对T
执行此操作时,有些困惑。然后我找到了上面的问题,并在其中找到了解决as T
编译器错误的方法。
但是为什么在使用object as T
时需要where T : class
而在使用(T)object
时不需要呢?
这两种方式的对象转换实际上有什么区别?