小编IsT*_*man的帖子

当限制已经包含接口时,在通用类型限制中使用class子句

我想我知道为什么,但是如果有人能启发我为什么,在编写此方法的时候,IStoreable接口是什么,将不胜感激:

public bool TryRetrieveItem<T>(string itemKey, out T item) where T : IStoreable
{
    item = default(T);

    if (this.RetrieveItem(itemKey, out IStoreable retItem))
    {
        item = (retItem as T);
        return true;
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

抱怨这个 item = (retItem as T);

为了解决该问题,我必须class在where子句中添加限制。

由于已经在接口上限制了T,为什么我应该这样做?是否因为接口可以通过非引用类型实现?还是我弄错了细节?

c# generics casting

2
推荐指数
1
解决办法
46
查看次数

标签 统计

c# ×1

casting ×1

generics ×1