返回顶部
首页 > 资讯 > 精选 >C#中怎么访问接口成员
  • 405
分享到

C#中怎么访问接口成员

2023-06-17 23:06:58 405人浏览 八月长安
摘要

C#中怎么访问接口成员,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#对接口成员访问C#对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果

C#中怎么访问接口成员,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

C#对接口成员访问

C#对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果底层成员的命名与继承而来的高层成员一致,那么底层成员将覆盖同名的高层成员。但由于接口支持多继承,在多继承中,如果两个父接口含有同名的成员,这就产生了二义性(这也正是C#中取消了类的多继承机制的原因之一),这时需要进行显式的定义:

using System ;  interface ISequence {  int Count { get; set; }  }  interface IRing {  void Count(int i) ;  }  interface IRingSequence: ISequence, IRing { }  class CTest {  void Test(IRingSequence rs) {  //rs.Count(1) ; 错误, Count 有二义性  //rs.Count = 1; 错误, Count 有二义性  ((ISequence)rs).Count = 1; // 正确  ((IRing)rs).Count(1) ; // 正确调用IRing.Count  }  }

上面的例子中,前两条语句rs .Count(1)和rs .Count = 1会产生二义性,从而导致编译时错误,因此必须显式地给rs 指派父接口类型,这种指派在运行时不会带来额外的开销。

再看下面的例子:

using System ;  interface IInteger {  void Add(int i) ;  }  interface IDouble {  void Add(double d) ;  }  interface INumber: IInteger, IDouble {}  class CMyTest {  void Test(INumber Num) {   // Num.Add(1) ; 错误  Num.Add(1.0) ; // 正确  ((IInteger)n).Add(1) ; // 正确  ((IDouble)n).Add(1) ; // 正确  }  }

调用Num.Add(1) 会导致二义性,因为候选的重载方法的参数类型均适用。但是,调用Num.Add(1.0) 是允许的,因为1.0 是浮点数参数类型与方法IInteger.Add()的参数类型不一致,这时只有IDouble.Add 才是适用的。不过只要加入了显式的指派,就决不会产生二义性。

接口的多重继承的问题也会带来C#对接口成员访问上的问题。例如:

interface IBase {  void FWay(int i) ;  }  interface ILeft: IBase {  new void FWay (int i) ;  }  interface IRight: IBase  { void G( ) ; }  interface IDerived: ILeft, IRight { }  class CTest {  void Test(IDerived d) {  d. FWay (1) ; // 调用ILeft. FWay  ((IBase)d). FWay (1) ; // 调用IBase. FWay  ((ILeft)d). FWay (1) ; // 调用ILeft. FWay  ((IRight)d). FWay (1) ; // 调用IBase. FWay  }  }

上例中,方法IBase.FWay在派生的接口ILeft中被Ileft的成员方法FWay覆盖了。所以对d. FWay (1)的调用实际上调用了。虽然从IBase-> IRight-> IDerived这条继承路径上来看,ILeft.FWay方法是没有被覆盖的。我们只要记住这一点:一旦成员被覆盖以后,所有对其的访问都被覆盖以后的成员"拦截"了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: C#中怎么访问接口成员

本文链接: https://lsjlt.com/news/293942.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中怎么访问接口成员
    C#中怎么访问接口成员,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#对接口成员访问C#对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果...
    99+
    2023-06-17
  • C#中怎么访问私有成员
    这期内容当中小编将会给大家带来有关C#中怎么访问私有成员,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先访问一个类的私有成员不是什么好做法。大家都知道私有成员在外部是不能被访问的。一个类中会存在很多私有...
    99+
    2023-06-17
  • 怎样实现C#接口成员
    这篇文章给大家介绍怎样实现C#接口成员,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为了实现C#接口,类可以定义显式接口成员执行体(Explicit interface memberimplementations)。显...
    99+
    2023-06-17
  • 怎么在java中访问类成员
    本篇文章给大家分享的是有关怎么在java中访问类成员,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整...
    99+
    2023-06-14
  • java多态中成员怎么访问
    今天小编给大家分享一下java多态中成员怎么访问的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。说明成员变量,编译看左边,运行...
    99+
    2023-06-30
  • 怎么在java中访问成员变量
    怎么在java中访问成员变量?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分...
    99+
    2023-06-14
  • C#接口成员举例分析
    本篇内容介绍了“C#接口成员举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#接口编程之接口成员定义说明: ·接口的成员是从基接口继...
    99+
    2023-06-17
  • C#怎么访问嵌套的命名空间成员
    这篇文章主要介绍了C#怎么访问嵌套的命名空间成员的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#怎么访问嵌套的命名空间成员文章都会有所收获,下面我们一起来看看吧。嵌套命名空间命名空间可以被嵌套,即您可以在一个...
    99+
    2023-06-17
  • 怎么在java访问多态中的成员
    本篇文章为大家展示了怎么在java访问多态中的成员,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发...
    99+
    2023-06-14
  • springboot怎么限制接口访问
    在Spring Boot中,可以使用Spring Security来限制接口的访问。Spring Security是一个基于Spri...
    99+
    2023-08-14
    springboot
  • C++ 友元函数如何访问私有成员?
    c++++ 中友元函数访问私有成员的方法有两种:在类内声明友元函数。声明一个类作为友元类,该类中所有的成员函数都可以访问另一个类的私有成员。 C++ 友元函数访问私有成员的方法 友元函...
    99+
    2024-04-15
    友元函数 访问私有成员 c++
  • c++内部类如何访问外部类成员
    在C++中,内部类可以直接访问外部类的成员变量和成员函数。为了访问外部类的成员,内部类需要使用外部类的指针来引用外部类的成员。以下是...
    99+
    2024-04-02
  • java类中的两种成员访问是什么
    这篇文章主要讲解了“java类中的两种成员访问是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java类中的两种成员访问是什么”吧!1、静态成员静态成员属于类,访问时需要类访问。静态成员...
    99+
    2023-06-30
  • C++ 友元函数能访问哪些类型成员?
    在 c++++ 中,友元函数可以访问类的所有公共、受保护和私有成员,但私有成员的访问受限,只能在类的成员函数调用时进行。 C++ 友元函数可以访问哪些类型成员? 什么是友元函数? 友元...
    99+
    2024-04-15
    类成员 友元函数 c++
  • Python中类成员有哪些访问限制
    本篇文章为大家展示了Python中类成员有哪些访问限制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pil...
    99+
    2023-06-14
  • C#入门之定义类成员与接口实现
    目录一、类成员的访问级别二、定义字段三、定义方法四、定义属性五、接口实现六、定义索引器七、运算符重载八、定义事件一、类成员的访问级别 public:可由任何代码访问。private(...
    99+
    2024-04-02
  • C++继承类成员访问权限修饰符详解
    目录1. 前言2. 不同修饰下的类成员被访问权限3. 继承时的属性变化4. protected的作用总结1. 前言 C++提供了三个修饰符来限定类成员的被访问权限,分别是public...
    99+
    2024-04-02
  • java怎么限制接口访问次数
    在Java中,可以使用计数器来限制接口的访问次数。具体的实现方式如下: 首先,在接口中定义一个静态计数器变量,用于记录接口的访问...
    99+
    2023-10-25
    java
  • C++非继承时函数成员访问属性和类继承过程中的访问控制
    目录一、非继承时public、protected和private成员的访问属性二、C++类继承过程中访问控制 一、非继承时public、protected和private成员的访问属...
    99+
    2024-04-02
  • C++中怎么调用C接口
    本篇文章为大家展示了C++中怎么调用C接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C++如何调用C接口首先提供一个C接口:#include"test.h" voi...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作