c# 接口

显示接口

在c#中,将定义方法的那个接口的名称作为方法名前缀,就会创建显示接口方法实现。

在调用显示接口的实现时必须将对象转换为具体的接口才能调用所需的方法:  如下所示:

    interface IWindow
    {
        Object GetMenu();
    }

    interface IRestaurant
    {
        Object GetMenu();
    }

    public sealed class MarioPizzeria: IWindow, IRestaurant
    {
        //这是IWindow的GetMenu方法的实现
        Object IWindow.GetMenu() { return null; }
        
        //这是IRestaurant的GetMenu方法的实现
        Object IRestaurant.GetMenu() { return null; }

        //这个GetMenu方法是可选的,与接口无关
        public Object GetMenu() {  return null; }
    }

    public class testt
    {
        public void t()
        {
            MarioPizzeria mario = new MarioPizzeria();
            //调用MarioPizzeria的公共GetMenu方法
            mario.GetMenu();

            //调用MarioPizzeria的IWindow.GetMenu方法
            IWindow window = mario;
            window.GetMenu();

            //调用MarioPizzeria的IRestaurant.GetMenu方法
            IRestaurant restaurant = mario;
            restaurant.GetMenu();
        }
    }

显示接口(EIMI)最主要的问题:

1. 没有文档解释类型具体如何实现一个EIMI方法,也没有Microsoft Visual Studio “智能感知” 支持

2. 值类型的实例在转换成接口时装箱

3. EIMI不能由派生类调用

 

 

泛型接口

泛型接口的优点:

1.    细致的类型约束;

2.    避免了值类型的装箱和拆箱;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值