接口(C# 参考)

接口只包含方法、属性、事件或索引器的签名。 实现接口的类或结构必须实现接口定义中指定的接口成员。 在下面的示例,类 ImplementationClass必须实现一个不具有参数并返回 void 的名为 SampleMethod 的方法。

示例

 1 interface ISampleInterface
 2 {
 3     void SampleMethod();
 4 }
 5
 6 class ImplementationClass : ISampleInterface
 7 {
 8     // Explicit interface member implementation:
 9     void ISampleInterface.SampleMethod()
10     {
11         // Method implementation.
12     }
13
14     static void Main()
15     {
16         // Declare an interface instance.
17         ISampleInterface obj = new ImplementationClass();
18
19         // Call the member.
20         obj.SampleMethod();
21     }
22 }

接口可以是命名空间或类的成员,并且可以包含下列成员的签名:

  • 方法
  • 属性
  • 索引器
  • 事件

一个接口可从一个或多个基接口继承。

当基类型列表包含基类和接口时,基类必须是列表中的第一项。

实现接口的类可以显式实现该接口的成员。 显式实现的成员不能通过类实例访问,而只能通过接口实例访问。

示例

下面的示例演示了接口实现。 在此示例中,接口包含属性声明,类包含实现。 实现 IPoint 的类的任何实例都具有整数属性 x 和 y。

 1 interface IPoint
 2 {
 3    // Property signatures:
 4    int x
 5    {
 6       get;
 7       set;
 8    }
 9
10    int y
11    {
12       get;
13       set;
14    }
15 }
16
17 class Point : IPoint
18 {
19    // Fields:
20    private int _x;
21    private int _y;
22
23    // Constructor:
24    public Point(int x, int y)
25    {
26       _x = x;
27       _y = y;
28    }
29
30    // Property implementation:
31    public int x
32    {
33       get
34       {
35          return _x;
36       }
37
38       set
39       {
40          _x = value;
41       }
42    }
43
44    public int y
45    {
46       get
47       {
48          return _y;
49       }
50       set
51       {
52          _y = value;
53       }
54    }
55 }
56
57 class MainClass
58 {
59    static void PrintPoint(IPoint p)
60    {
61       Console.WriteLine("x={0}, y={1}", p.x, p.y);
62    }
63
64    static void Main()
65    {
66       Point p = new Point(2, 3);
67       Console.Write("My Point: ");
68       PrintPoint(p);
69    }
70 }
71 // Output: My Point: x=2, y=3

时间: 2024-11-04 19:49:22

接口(C# 参考)的相关文章

常用API接口签名验证参考

项目中常用的API接口签名验证方法: 1. 给app分配对应的key.secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数名称将所有请求参数按照字母先后顺序排序得到:keyvaluekeyvalue...keyvalue  字符串如:将arong=1,mrong=2,crong=3 排序为:arong=1, crong=3,mrong=2  然后将参数名和参数值进行拼接得到参数字符串:arong1crong3mrong2: b. 将secr

转载-常用API接口签名验证参考

原文地址: http://www.cnblogs.com/hnsongbiao/p/5478645.html 写的很好,就做个笔记了.感谢作者! 项目中常用的API接口签名验证方法: 1. 给app分配对应的key.secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数名称将所有请求参数按照字母先后顺序排序得到:keyvaluekeyvalue...keyvalue  字符串如:将arong=1,mrong=2,crong=3 排序为:aro

短信接口与短信平台收费标准----速码云仅供参考

就目前来说短信接口 价格参考 行业收费也基本上没有个固定的标准的价格,都是看各个公司自己的通道套餐跑的量和公司的运营成本结合预算后最终才来制定一套给客户的价格,所以说在短信行业里面短信公司获取的利润是非常小的,除了运营商的短信通道费用之外还有公司的人员成本,公司的场地,服务器和系统等等一切费用,一般几分钱的短信利润大的可能是1-2分钱,如果客户购买得多的话那么几个就会很低,那么利润就有可能是几厘钱了,所以短信公司也是薄利多销,下面就提供一些短信接口行业一般的短信价格给大家参考. 套餐1,比如购买

C#中的继承与多态还有接口

简单继承 最简单的三个类 public class Animal { public Animal() { Debug.Log("Construct Animal!"); } } public class Mammal : Animal { public Mammal() { Debug.Log("Construct Mamal!"); } } public class Sheep : Mammal { public Sheep() { Debug.Log("

JS设计模式之接口

JS能把类模仿得惟妙惟肖,也可以模仿接口,参考pro javascript design pattern一书,主要有3种方式 注释(Comment) 这种不用多说了,就是在注释里写明接口定义了哪些方法,哪些地方需要实现什么接口.好处是不会增加任何多的对象或函数,也不会影响执行效率.坏处也很明显,一切靠自觉,而且没有错误提示. 属性检查(Attribute Checking) function Dog() { this.implementInterfaces = ['Animal']; } fun

lua对模块接口扩展的一种方法

module lua中模块的实现,对于使用者来说就是一个库,引用此库后,可以调用库中实现的任意函数. 使用库,可以将一类功能相关的接口做封装,并提供开放接口. 参考: http://blog.codingnow.com/2006/02/lua_51_module.html module 重载需求 我们实现引用程序,往往要引用若干已经实现的库文件, 这些库大都是开源的,以此来加快应用开发进程 应用库后, 应用编码中, 会引用库的一些API, 例如会是 lfs 库中的 dir 来list目录下的文件

深入理解JavaScript系列(21):SOLID五大原则之接口隔离原则ISP(转载)

深入理解JavaScript系列(21):SOLID五大原则之接口隔离原则ISP 前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle). 英文原文:http://freshbrewedcode.com/derekgreer/2012/01/08/solid-javascript-the-interface-segregation-principle/注:这篇文章作者写得

Linux中的lo回环接口详细介绍

1.linux的网络接口之扫盲 (1)网络接口的命名 这里并不存在一定的命名规范,但网络接口名字的定义一般都是要有意义的.例如: eth0: ethernet的简写,一般用于以太网接口. wifi0:wifi是无线局域网,因此wifi0一般指无线网络接口. ath0: Atheros的简写,一般指Atheros芯片所包含的无线网络接口. lo: local的简写,一般指本地环回接口. (2)网络接口如何工作 网络接口是用来发送和接受数据包的基本设备. 系统中的所有网络接口组成一个链状结构,应用层

自定义实现字符串string的接口

用char*管理String类的内存,new动态分配,在析构函数中delete char*指向的new出来的内存,一个string类需要实现那些接口可参考标准库里的string:  http://www.cplusplus.com/reference/string/string/ 实现思路是:在创建String.String需要伸缩(如赋值时需要调整大小.字符串相加也需要更大的空间)时重新new内存,并释放掉原有内存:标准库string的空间是预先分配的,有多余的空间可用,如果string需要伸

Android中的Parcelable接口和Serializable用法和区别

Parcelable接口: Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR, which is an object implementing the Parcelable.Creator inter