Warum kann ich dies tun:Warum erhält "as T" einen Fehler, aber ein Casting mit (T) keinen Fehler?
public T GetMainContentItem<T>(string moduleKey, string itemKey)
{
return (T)GetMainContentItem(moduleKey, itemKey);
}
aber nicht so:
public T GetMainContentItem<T>(string moduleKey, string itemKey)
{
return GetMainContentItem(moduleKey, itemKey) as T;
}
Es beschwert sich, dass ich nicht der generische Typ genug eingeschränkt haben, aber dann würde ich denken, dass Regel Gießen gelten würde mit "(T)" auch.
Ihre Antwort ist falsch, Sie können Werttypen umwandeln, das Ergebnis wird Nullable sein, siehe diesen Beitrag und die Antwort von Jon Skeet: http://stackoverflow.com/questions/496096/casting-vs-using-the -als-Stichwort-in-der-Clr – Mikhail