К чему относится термин “Ограничение голого типа”?
-
20-09-2019 - |
Вопрос
Недавно я прочитал термин "ограничение голого типа" в контексте дженериков.Что это значит?Где мы его используем?
Решение
От MSDN:
Constraint Description where T : U The type argument supplied for T must be or derive from the argument supplied for U. This is called a naked type constraint.
Когда параметр универсального типа используется в качестве ограничения, он называется ограничением голого типа.Ограничения голого типа полезны, когда функция-член со своим собственным параметром типа должна ограничить этот параметр параметром типа содержащего типа, как показано в следующем примере:
class List<T>
{
void Add<U>(List<U> items) where U : T {/*...*/}
}
Другие советы
Кроме того, мне кажется странным, что этому несколько непристойному термину удалось попасть в документацию MSDN.Мы, конечно, не называем эти ограничения "ограничениями голого типа" в команде компиляторов C #, и я был шокирован, потрясен!обнаружить несколько лет назад, что именно об этом говорится в документации.Обычно мы называем их "ограничениями параметров типа".Я понятия не имею, как этот термин вообще попал в документацию;вероятно, там есть интересная история.
"Когда параметр универсального типа используется в качестве ограничения, это называется ограничением голого типа.Ограничения голого типа полезны, когда функция-член со своим собственным параметром типа должна ограничить этот параметр параметром типа содержащего типа"