What does the term "Naked type constraint" refer to?
Recently I ha开发者_Python百科ve read a term "naked type constraint" in the context of Generics. What does it mean? Where do we use it?
As an aside, it is bizarre to me that this somewhat salacious term managed to make it into the MSDN documentation. We certainly do not call these constraints "naked type constraints" on the C# compiler team and I was shocked, shocked! to discover a few years back that this is what the documentation said. We usually call them "type parameter constraints". I have no idea how this term got into the documentation in the first place; there's probably an interesting story there.
From 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.
When a generic type parameter is used as a constraint, it is called a naked type constraint. Naked type constraints are useful when a member function with its own type parameter has to constrain that parameter to the type parameter of the containing type, as shown in the following example:
class List<T>
{
void Add<U>(List<U> items) where U : T {/*...*/}
}
"When a generic type parameter is used as a constraint, it is called a naked type constraint. Naked type constraints are useful when a member function with its own type parameter has to constrain that parameter to the type parameter of the containing type"
http://msdn.microsoft.com/en-us/library/d5x73970.aspx
精彩评论