【发布时间】:2009-11-13 16:57:40
【问题描述】:
最近我在泛型的上下文中阅读了一个术语“裸类型约束”。它有什么作用 意思是?我们在哪里使用它?
【问题讨论】:
标签: c# generics type-constraints
最近我在泛型的上下文中阅读了一个术语“裸类型约束”。它有什么作用 意思是?我们在哪里使用它?
【问题讨论】:
标签: c# generics type-constraints
顺便说一句,我觉得奇怪的是,这个有点下流的术语居然成功地出现在了 MSDN 文档中。我们当然不会在 C# 编译器团队中将这些约束称为“裸类型约束”,我感到震惊、震惊!几年前发现这就是文档所说的。我们通常称它们为“类型参数约束”。我不知道这个术语最初是如何进入文档的。那里可能有一个有趣的故事。
【讨论】:
来自MSDN:
约束描述 其中 T : U 为 T 提供的类型参数必须是或派生自 为 U 提供的参数。这称为裸类型 约束。当泛型类型参数用作约束时,称为裸类型约束。当具有自己类型参数的成员函数必须将该参数约束为包含类型的类型参数时,裸类型约束非常有用,如下例所示:
class List<T>
{
void Add<U>(List<U> items) where U : T {/*...*/}
}
【讨论】:
"当泛型类型参数用作约束时,它被称为裸类型约束。当具有自己类型参数的成员函数必须将该参数约束为包含类型的类型参数时,裸类型约束很有用"
【讨论】: