繁体   English   中英

尝试显式定义方法时包含类型不实现接口

[英]Containing type does not implement interface when trying to explicitly define a method

    interface eer {

        public abstract void S1<T>(T? t) where T : struct;
        public abstract void S1<T>(T? t) ;
    }

    class A1 : eer {

        void eer.S1<T>(T? t){}
        void eer.S1<T>(T? t)where T:default{}
    }

    class B1 : A1 {

        void eer.S1<T>(T? t) { }  //error
        void eer.S1<T>(T? t) where T : default { }  //error
    }

所以我的B1 class间接实现了eer接口,但是当我尝试在B1中显式实现S1<T>(T? t) where T: structS1<T>(T? t)方法时,我收到错误消息,指出包含类型不实现eer接口。

我猜这是因为在某些情况下可能会有一些歧义。
你能告诉我为什么会这样吗(现在对我来说没有意义)?

只需将eer接口添加到B1即可。 解释是A1必须实现eer接口,而B1与此无关。 当你想在显式模式 (eer.S1) 中实现方法时, B1不知道你想实现eer接口,因为它没有为B1 class 定义。

 class B1 : A1, eer
 {

     void eer.S1<T>(T? t) { }  //error
     void eer.S1<T>(T? t) where T : default { }  //error
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM