Думаю, я знаю почему, но было бы очень признательно, если бы кто-то мог объяснить мне, почему, когда я пишу этот метод, где 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;
}
Жалуется на это item = (retItem as T);
И чтобы исправить это, я должен добавить ограничение class
к предложению where.
Зачем мне это делать, поскольку я уже ограничиваю T на интерфейсе?Это потому, что интерфейсы могут быть реализованы не ссылочными типами?Или, может быть, я неправильно понял детали?