• 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);
        }    
    }
  • 相关阅读:
    Hive中频繁报警的问题
    Hadoop中Namenode的HA查询和切换
    昨天面试遇到的一道C语言题
    【转】MapReduce的优化
    关于linux修改max user processes limits的问题
    Hadoop-2.6.0安装文档
    C#使用RabbitMQ
    windows配置Erlang环境
    【转】linux查看及修改文件权限以及相关
    (转)C#图解—PictureBox.SizeMode 属性
  • 原文地址:https://www.cnblogs.com/forever-Ys/p/10294145.html
Copyright © 2020-2023  润新知