我为什么可以这样做:
public T GetMainContentItem<T>(string moduleKey, string itemKey)
{
return (T)GetMainContentItem(moduleKey, itemKey);
}
但不是这个:
public T GetMainContentItem<T>(string moduleKey, string itemKey)
{
return GetMainContentItem(moduleKey, itemKey) as T;
}
它提示说我没有足够地限制泛型类型,但后来我认为该规则也将适用于使用“(T)”进行强制转换。
最佳答案
因为“T”可能是值类型,而“as T”对于值类型没有意义。你可以这样做:
public T GetMainContentItem<T>(string moduleKey, string itemKey)
where T : class
{
return GetMainContentItem(moduleKey, itemKey) as T;
}
关于c# - 为什么 "as T"会出错,而使用(T)进行转换却不会出错?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1178280/