Недавно я прочитал термин "ограничение голого типа" в контексте Generics. Что это имею в виду? Где мы его используем?
К чему относится термин "ограничение голого типа"?
Ответ 1
От 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.
Когда параметр generic type используется как ограничение, он называется ограничением голого типа. Ограничения голого типа полезны, когда функция-член со своим собственным параметром типа должна ограничивать этот параметр параметром типа содержащего типа, как показано в следующем примере:
class List<T>
{
void Add<U>(List<U> items) where U : T {/*...*/}
}
Ответ 2
Как ни странно, для меня странно, что этот несколько непристойный термин смог превратить его в документацию MSDN. Мы определенно не называем эти ограничения "голыми ограничениями типа" в команде компилятора С#, и я был потрясен, потрясен! чтобы обнаружить несколько лет назад, что это то, что говорится в документации. Обычно мы называем их "ограничениями параметров типа". Я понятия не имею, как этот термин попал в документацию в первую очередь; там, вероятно, интересная история.
Ответ 3
"Когда параметр типа generic используется как ограничение, он называется ограничением голого типа. Ограничения типа Naked полезны, когда функция-член со своим собственным параметром типа должна ограничивать этот параметр параметром типа содержащего типа"