К чему относится термин "ограничение голого типа"?

Недавно я прочитал термин "ограничение голого типа" в контексте 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 полезны, когда функция-член со своим собственным параметром типа должна ограничивать этот параметр параметром типа содержащего типа"

http://msdn.microsoft.com/en-us/library/d5x73970.aspx