В отношении приведения общего типа к типу T при принудительном применении тип 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
.
Но почему where T : class
необходимо при использовании object as T
, а не при использовании (T)object
? Какова фактическая разница между двумя способами приведения объекта?