C# 接口用法

2021-06-19 01:07

阅读:607

标签:引用   inter   实现   tin   默认   索引   not   ace   div   

一、接口定义

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

 

二、声明接口

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# 接口用法

标签:引用   inter   实现   tin   默认   索引   not   ace   div   

原文地址:https://www.cnblogs.com/forever-Ys/p/10294145.html


评论


亲,登录后才可以留言!