Möglichkeiten, um gegossene Objekte zu einem generischen Typ

In Bezug auf Gießen generic type "T", während die Durchsetzung der Typ von T

Und mit dem folgenden Beispiel

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;
}

und

private static T deserialize<T>(string streng)
{
    XmlSerializer ser = new XmlSerializer(typeof(T));
    StringReader reader = new StringReader(streng);
    return (T)ser.Deserialize(reader);
}

Ich bin es gewohnt, die object as Type casting, so war ich ein wenig verwirrt, als ich fand, dass ich konnte nicht einfach tun, dass mit T. Dann fand ich die Frage oben und in eine Lösung des as T compiler-Fehler.

Aber warum ist where T : class erforderlich, wenn Sie object as T und nicht bei der Verwendung von (T)object?
Was ist eigentlich der Unterschied zwischen den beiden Arten von Gießen das Objekt?

  • Oh ja, danke abatishchev. Viel eleganter ist, ohne die namespaces 🙂
InformationsquelleAutor Heki | 2010-12-21
Schreibe einen Kommentar