“裸型约束”一词是指什么?

时间:2009-11-13 16:57:40

标签: c# generics type-constraints

最近我在泛型的背景下读到了一个术语“裸型约束”。它是什么 意思?我们在哪里使用它?

3 个答案:

答案 0 :(得分:24)

顺便说一句,对我而言,这个有点猥亵的术语能够成为MSDN文档的一部分是奇怪的。我们当然不会在C#编译器团队中将这些约束称为“裸体约束”,我感到震惊,震惊!几年前发现这是文档所说的。我们通常称它们为“类型参数约束”。我不知道这个术语最初是如何进入文档的;那里可能有一个有趣的故事。

答案 1 :(得分:14)

来自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.
  

当泛型类型参数用作约束时,它被称为裸型约束。当具有自己的类型参数的成员函数必须将该参数约束到包含类型的type参数时,裸类型约束很有用,如以下示例所示:

class List<T>
{
    void Add<U>(List<U> items) where U : T {/*...*/}
}

答案 2 :(得分:6)

“当泛型类型参数用作约束时,它被称为裸型约束。当具有自己的类型参数的成员函数必须将该参数约束到包含类型的类型参数时,裸型约束很有用“

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