接口 IEnumerable

1.接口

C#提供了可供类继承的接口,在此解释一下经常遇到的IEnumerable,在此首相解释一下接口,如下例所示:

/// <summary>
    /// 简述Interface的用法
    /// </summary>

    //定义接口,接口都是公用的,其内部的方法属性都是公用的,无需作用域修饰符
    public interface IAttack
    {
        string AttackMethod
        {
            get; set;
        }
        void Attack();
    }

    //定义两个不同类型的攻击者,两者均继承了此接口
    public class Attacker1:IAttack
    {
        private string attacker1="Attacker1 发动了攻击";
        public string AttackMethod
        {
            get;set;
        }
        public void Attack()
        {
            Console.WriteLine(attacker1);
        }
    }
    class Attacker2:IAttack
    {
        private string attacker2 = "Attacker2 发动了攻击";
        public string AttackMethod
        {
            get;set;
        }
        public void Attack()
        {
            Console.WriteLine(attacker2);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //可以通过接口来声明,并通过相关类来构造
            //接口的思想在于此,通过统一的接口定义,实现不通方法
            IAttack a1 = new Attacker1();
            a1.Attack();
            Attacker1 a2 = new Attacker1();
            a2.Attack();
            IAttack a3 = new Attacker2();
            a3.Attack();
            Console.ReadKey();
        }
    }

2.IEnumerable

接口即统一定义了一些方法、属性、所以和事件的切入口,通过不同的类的继承来实现不同的方法。IEnumerable则是C#定义的接口它拥有一个GetEnumerator方法,该方法返回值为IEnumerator类型,IEnumerator为拥有一个Current属性和MoveNext(return bool)、Reset()方法的接口。在C#中string类和list类均继承了IEnumerable,并对方法GetEnumerator进行了实现,所以根据接口的定义与实现,则下列语句是合法的:

            IEnumerable ab = new List<int>();
            IEnumerable abc = new string(b);

起效果等同于
List ab=new List();
string ab=new string(…)

用IEnumerable定义的对象必须用实现GetEnumerator方法的类(即继承自IEnumerable的类)进行构造。在C#中可以使用foreach语句的类需要继承IEnumerable接口,实现其对应的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值