看看以下简单的界面:
public interface IService { }
现在是以下开放泛型类,它对该接口以及任何其他引用类型都有类型约束:
public class Service<T>
where T : IService, class
这会在class
约束条件下显示以下红色卷曲的错误消息:
'class'或'struct'约束必须先于任何其他约束 约束
当我重新排序这样的约束时:
public class Service<T>
where T : class, IService
然后一切都很好。
现在我知道这没有任何意义,因为如果已经使用class
约束,则可以省略IService。但我只是好奇为什么命令对编译器如此重要?