13

最近我在泛型的上下文中阅读了一个术语“裸类型约束”。这是什么意思?我们在哪里使用它?

4

3 回答 3

25

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

于 2009-11-14T00:41:15.050 回答
15

来自MSDN

约束描述

其中 T : U 为 T 提供的类型参数必须是或派生自
                    为 U 提供的参数。这称为裸类型
                    约束。

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

class List<T>
{
    void Add<U>(List<U> items) where U : T {/*...*/}
}
于 2009-11-13T17:01:54.953 回答
6

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

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

于 2009-11-13T17:00:36.940 回答