zoukankan      html  css  js  c++  java
  • C# 接口用法

    一、接口定义

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

    二、声明接口

    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);
        }    
    }
  • 相关阅读:
    基础MYSQl技巧集锦
    C MySQL float类型数据 用 printf()打印
    1Tomcat+Axis+Eclipse实例讲解 2自己做的一个可以用的webservice,只是开始 (WebService好文)
    信号量 进程 (m个生产者,n个消费者,容量为r的缓冲区)
    信号量和同步互斥
    C语言 wait()信号量部分 signal()信号量部分代码
    Tomcat+Axis+Eclipse实例讲解
    MySQL 集合 补集
    SELECT DocID, SUM(a.Score + B.Score) AS TOTAL Itemset_ONE a LEFT Join Itemset_Two b ON a.DocID=b.DocID 太慢
    Yii AR Model 查询
  • 原文地址:https://www.cnblogs.com/forever-Ys/p/10294145.html
Copyright © 2011-2022 走看看