我想我知道为什么,但是如果有人能启发我为什么,在编写此方法的时候,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,为什么我应该这样做?是否因为接口可以通过非引用类型实现?还是我弄错了细节?