c# – 为什么“as T”得到一个错误,但用(T)进行转换不会出错?

前端之家收集整理的这篇文章主要介绍了c# – 为什么“as T”得到一个错误,但用(T)进行转换不会出错?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么我可以这样做:
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’可以是一个值类型,而’T’对于值类型没有任何意义.你可以这样做:
public T GetMainContentItem<T>(string moduleKey,string itemKey)
    where T : class
{
    return GetMainContentItem(moduleKey,itemKey) as T;
}

猜你在找的C#相关文章