Не забывайте также допускать сложности пространства, которые могут также быть поводом для беспокойства, если у Вас есть ресурсы ограниченной памяти. Так, например, можно услышать, что кто-то желает постоянный алгоритм пространства, который является в основном способом сказать, что сумма места, занятого алгоритмом, не зависит ни от каких факторов в коде.
Иногда сложность может прибыть из того, сколько раз что-то называют, как часто цикл выполняется, как часто память выделяется, и так далее другая часть для ответа на этот вопрос.
Наконец, большой O может использоваться для худшего случая, лучшего случая и случаев амортизации, где обычно это - худший случай, который используется для описания, как плохо алгоритм может быть.
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;
}
If T is a value type this is an exception, you need to make sure T is either Nullable or a class.
Является ли T
типом значения? В таком случае, если оператор as
завершится неудачно, он вернет null
, который не может быть сохранен в типе значения.
Продолжение ответа Юрия Факторовича:
public T GetMainContentItem<T>(string moduleKey, string itemKey) where T: class
{
return GetMainContentItem(moduleKey, itemKey) as T;
}
Это поможет ...
Потому что as T
возвращает null
в случае, если он не может привести к T
в отличие от (T)
, который вызывает исключение. Так что, если T
не Nullable
или класс
, он не может быть null
... я думаю.