一、接口定义

  接口是指一组函数成员而不实现它们的引用类型,只能由类和结构来是实现,接口的作用就不阐述了

二、声明接口

interface IMyInterface  //interface 是关键字,后面的是接口名称
{
int DoSomething(int val1, int val2); //分号代表实现主体,不能含有public等修饰符,默认为public
}

  下面是一些注意事项:

    a:接口声明不能包括静态成员和数据成员,只能包含非静态成员方法、时间、属性、索引器

    b:函数成员的声明不能有任何实现代码,并且在每个声明的主体后使用分号分隔

    c:   接口成员可以使用public、private等修饰符,而接口成员是隐式public,不允许有任何访问修饰符,包括public

    d:按照惯例,接口名称从大写的 I 开始,如 ITest

    e:如果类从基类继承并使用了接口,基类必须放在接口之前(只能有一个基类,接口可以有多个)

    f:接口可以继承接口

三、接口和as运算符

IMyInter b = c as IMyInter;
if(b != null)
Console.WriteLine("Not null");

代码先使用as运算符从类对象获取接口引用,并赋值给b,使b的值为null 或 IMyInter,判断是否为null

四、实现具有重复成员的接口

  由于类可以实现任意数量的接口,因此可能有多个接口成员有相同的签名和返回类型,例如:

interface IMyInter1
{
void Print(string a);
} interface IMyInter2
{
void Print(string b);
}

对于上面的例子,有两种解决方法

  1、实现单个成员来满足所有包含重复成员的接口

class MyClass : IMyInter1, IMyInter2
{
public void Print(sting s)
{
Console.WriteLine("value is {0}",s);
}
}

  2.创建显式接口成员实现,由接口名称加点号分隔符和成员名称组成

class MyClass : IMyInter1, IMyInter2
{
public void IMyInter1.Print(sting s)
{
Console.WriteLine("IMyInter1 value is {0}",s);
} public void IMyInter2.Print(sting s)
{
Console.WriteLine("IMyInter2 value is {0}",s);
}
}

C# 接口用法的更多相关文章

  1. (实用篇)php支付宝接口用法分析

    本文实例讲述了php支付宝接口用法.分享给大家供大家参考.具体分析如下: 现在流行的网站支持平台,支付宝当仁不让的老大了,现在我们就来告诉你如何使用支付宝api来做第三方支付,把支付宝放到自己网站来, ...

  2. php新浪微博登录接口用法实例

    本文实例讲述了php新浪微博登录接口用法.分享给大家供大家参考.具体分析如下: 在做微博登陆之前是需要申请到APP KEY 和App Secret,这个的申请方式请去 open.weibo.com 申 ...

  3. Java语言Socket接口用法详解

    Socket接口用法详解   在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Serve ...

  4. Android中Parcelable与Serializable接口用法

    转自: Android中Parcelable接口用法 1. Parcelable接口 Interface for classes whose instances can be written to a ...

  5. JS版微信6.0分享接口用法分析

    本文实例讲述了JS版微信6.0分享接口用法.分享给大家供大家参考,具体如下: 为了净化网络,整顿诱导分享及诱导关注行为,微信于2014年12月30日发布了<微信公众平台关于整顿诱导分享及诱导关注 ...

  6. Android中Parcelable接口用法

    from: http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html Interface for classes wh ...

  7. jmeter的简单http接口用法

    1.  jmeter的启动:windows下的环境 进入jmeter的并目录双击启动 Mac电脑 进入bin目录找到jmeter.sh 文件 在终端执行./jmeter.sh 或者./jmeter. ...

  8. (转)Android中Parcelable接口用法

    1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...

  9. Iterator接口用法

    1.所有实现Collection接口的容器类都有一个iteractor方法,用于返回一个实现了Iteractor接口的对象, 2.Iteractor对象成为迭代器,用以实现对容器内元素的遍历操作 3. ...

随机推荐

  1. Nodejs-- web服务器

    第一篇关于nodejs的东西,代码在此作为备份. 该代码目前未完成,是一个阻塞式的代码. 1.index.js ar server=require('./server'); var route=req ...

  2. 基于统计的无词典的高频词抽取(二)——根据LCP数组计算词频

    接着上文[基于统计的无词典的高频词抽取(一)——后缀数组字典序排序],本文主要讲解高频子串抽取部分. 如果看过上一篇文章的朋友都知道,我们通过 快排 或 基数排序算出了存储后缀数组字典序的PAT数组, ...

  3. BitAdminCore框架应用篇:(四)核心套件querySuite按钮功能

    索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/coo ...

  4. .net core Swagger

    Startup中的  ConfigureServices //注册 Swagger services.AddSwaggerGen(sg => { sg.SwaggerDoc("refu ...

  5. 使用datepicker日期插件

    使用datepicker日期插件 在引入<jquery.js> <bootstrap.js><datepicker.js>之后 引用<bootstrap.cs ...

  6. SL 的 DATAGRID中如何加入计算列?

    例如,我的数据库中实体表对应到EF中的实体类是 class { public int  F1; public int F2; } 我在服务端做domainservice 我在SL端使用wcf ria, ...

  7. docker registry 私有仓库 安装配置、查询、删除

    #++++++++++++++++++++++++++++++ #docker-registry 私有仓库 #搜索,下载register镜像 docker search registry docker ...

  8. PHPhotos

    PHPhotoLibrary: @abstract A PHPhotoLibrary provides access to the metadata and image data for the ph ...

  9. 利用tensorflow训练简单的生成对抗网络GAN

    对抗网络是14年Goodfellow Ian在论文Generative Adversarial Nets中提出来的. 原理方面,对抗网络可以简单归纳为一个生成器(generator)和一个判断器(di ...

  10. nodejs 像 C 语言那样输出当前代码的行数

    http://stackoverflow.com/questions/11386492/accessing-line-number-in-v8-javascript-chrome-node-js Ob ...