当前位置: 首页 > 编程语言 > C#

泛型约束和接口实现-继承分享

时间:2023-04-10 23:10:28 C#

泛型约束和接口实现/继承不太确定如何表述这个问题,因为它是一个“为什么这不起作用?”查询类型。我已将我的具体问题简化为以下代码:))//无法从'Foo'转换为'T'{}}现在,Bar类中的泛型T必须实现IFoo。那么为什么编译器在注释中给出错误呢?Foo的一个实例肯定是IFoo,因此可以作为泛型T的代表传递吗?这是编译器限制还是我遗漏了什么?您还可以使用Fiz以任何其他方式独立于Foo实现IFoo:Fizfiz=foo;//不会编译。你想要的可能更像是:publicclassBarwhereT:IFoo,new(){publicBar(Tt){}publicBar():this(newT()){}}这样你就可以拥有BarbarFoo=新酒吧();BarbarFiz=newBar();如果创建类Baz,那么泛型类型Barbaz=newBar(),那么构造函数重载定义的newFoo()将不是T类型,在本例中为Baz。这是因为如果您创建一个类:publicclassFred:IFoo{}然后像这样实例化Bar:varbar=newBar();然后它违反了类的约束,因为Foo不是Fred,它是当前的T你可以通过在构造函数中放置InvalidCastExceptionsequence(T)(IFoo)newFoo()来强制编译,但是你会在运行时,如果T的实际类型不能从Foo分配。以上就是C#学习教程分享的全部内容:通用约束和接口实现/继承。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: