加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – .Net接口继承编译

发布时间:2020-12-15 17:29:03 所属栏目:百科 来源:网络整理
导读:为什么是这样 : public interface IServiceRechercheT,U where T : IEntite where U : ICritereRecherche{ IListT Rechercher(U critere);}public interface IServiceRechercheUnite : IServiceRechercheIUnite,ICritereRechercheUnite,{} 不同于 : public
为什么是这样 :

public interface IServiceRecherche<T,U>
                    where T : IEntite
                    where U : ICritereRecherche
{
    IList<T> Rechercher(U critere);
}

public interface IServiceRechercheUnite :
                        IServiceRecherche<IUnite,ICritereRechercheUnite>,{}

不同于 :

public interface IServiceRechercheUnite                             
{
    IList<IUnite> Rechercher(ICritereRechercheUnite critere);
}

编译时?

使用第一个接口编译的应用程序无法识别第二个接口.我知道它们在代码中不一样,但最终在执行期间为什么它们不一样?

解决方法

从CLR的角度来看,这些是不同的类型,因为第一个是封闭泛型类型,继承自IServiceRecherche< T,U>.

but in the end during execution why aren’t they the same

原因是相同的,如下:

public MyClass1
{
  public int MyProperty { get; set; }
}

public MyClass2
{
  public int MyProperty { get; set; }
}

它们只是一个不同类型的声明,尽管有类似的成员声明.

CLR不能这么想:“啊,MyClass1和MyClass2是相同的.让我们把它们视为同一类型”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读