其中t:多个类

List Foo(Ilist list) where T : ?? 

有没有办法强制执行T.
少数几个class级之一?

最后我想对T进行切换..

谢谢。

以这种方式强制执行类型约束表示这几个类与常用function相关。

您应该实现一个通用接口,然后将类型限制为该接口:

 public interface IUseful { public void UsefulMethod(); } List Foo(IList list) where T : IUseful { // You now have access to all common functionality defined in IUseful } 

额外的好处是,现在您不必打开T来实现不同的行为。 您可以让IUseful的孩子实施自己的行为,然后自己调用每个行为。

您可以要求允许列表中允许的每个类实现一些接口ISomething ,然后创建List

最后我想对T进行切换..

不是切换对象的类型,而是在接口中使用方法并为每个类实现不同的方法可能更好。

在这种情况下,T可以是列出对象共享的公共基类或接口。 你可以拥有List ,如果它们各自实现了IFoo接口,那么列表可以包含类Foo, Bar, and Baz 。 如果没有使用inheritance,您将会遇到一个对象列表。

你想要什么? 冒号后,您可以枚举约束T的类型。

对于多个类,可能实现一个通用接口并将约束设置为它可能会起作用。

请查看此链接以获取更多详细信息: 类型参数的约束(C#编程指南)

据我所知,这是不可能的。 我建议从公共基类或接口派生有限的类集。