Foo其中T : BaseObject和Foo之间的区别

本文关键字:BaseObject Foo 区别 之间 其中 | 更新日期: 2023-09-27 18:34:12

两者有什么区别

Foo<T> where T : BaseObject

Foo<BaseObject>

这句话不是一样吗?

Foo<T>其中T : BaseObject和Foo<BaseObject>之间的区别

不,它不一样。

跟:

Foo<T> where T : BaseObject

T可以是任何BaseObject类型及其继承者。

跟:

Foo<BaseObject>

T必须精确BaseObject(假设没有在Foo中为泛型类型参数声明方差修饰符)。

考虑一下:

var list = new List<object>();
list.Add("Hello");
Console.WriteLine(list[0].Length); // doesn't compile

类似地,在Foo<BaseObject>中,Foo的消费者只能从Foo的T成员访问BaseObject成员。 With Foo<T> where T : BaseObject,Foo的消费者将可以访问任何派生类型的所有成员,无论实际传递给类型参数。