Почему делает, “поскольку T” получают ошибку, но бросающий с (T) не получают ошибку?

Не забывайте также допускать сложности пространства, которые могут также быть поводом для беспокойства, если у Вас есть ресурсы ограниченной памяти. Так, например, можно услышать, что кто-то желает постоянный алгоритм пространства, который является в основном способом сказать, что сумма места, занятого алгоритмом, не зависит ни от каких факторов в коде.

Иногда сложность может прибыть из того, сколько раз что-то называют, как часто цикл выполняется, как часто память выделяется, и так далее другая часть для ответа на этот вопрос.

Наконец, большой O может использоваться для худшего случая, лучшего случая и случаев амортизации, где обычно это - худший случай, который используется для описания, как плохо алгоритм может быть.

9
задан Edward Tanguay 24 July 2009 в 15:04
поделиться

5 ответов

Because 'T' could be a value-type and 'as T' makes no sense for value-types. You can do this:

public T GetMainContentItem<T>(string moduleKey, string itemKey)
    where T : class
{
    return GetMainContentItem(moduleKey, itemKey) as T;
}
23
ответ дан 4 December 2019 в 07:23
поделиться

If T is a value type this is an exception, you need to make sure T is either Nullable or a class.

6
ответ дан 4 December 2019 в 07:23
поделиться

Является ли T типом значения? В таком случае, если оператор as завершится неудачно, он вернет null , который не может быть сохранен в типе значения.

1
ответ дан 4 December 2019 в 07:23
поделиться

Продолжение ответа Юрия Факторовича:

public T GetMainContentItem<T>(string moduleKey, string itemKey) where T: class
{
    return GetMainContentItem(moduleKey, itemKey) as T;
}

Это поможет ...

0
ответ дан 4 December 2019 в 07:23
поделиться

Потому что as T возвращает null в случае, если он не может привести к T в отличие от (T) , который вызывает исключение. Так что, если T не Nullable или класс , он не может быть null ... я думаю.

0
ответ дан 4 December 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: