您的位置:首页 > 其它

接口的显式调用和隐式调用

2013-05-06 11:52 190 查看
namespace MyInface

{

    //显示接口就是只能用接口调用。

    //隐式接口和类都能调用。

   

    public interface IBookList

    {

        void Add(string BookName);

        void Append(string BookName);

        void Remove(int position);

        int Count { get;}

        string this[int index] { get;set;}

    }

    //隐式调用

    public class BookList : IBookList

    {

        private List<string> booklist = new List<string>();

        #region IBookList 成员

        public void Add(string BookName)

        {

            booklist.Add(BookName);

        }

        public void Append(string BookName)

        {

            booklist.Insert(booklist.Count, BookName);

        }

        public void Remove(int position)

        {

            booklist.RemoveAt(position);

        }

        public int Count

        {

            get

            {

                return booklist.Count;

            }

        }

        public string this[int index]

        {

            get

            {

                return booklist[index];

            }

            set

            {

                booklist[index] = value;

            }

        }

        #endregion

    }

    //显示调用   该类只能用接口调用。

    public class BookList2 : IBookList

    {

        private List<string> booklist = new List<string>();

        #region IBookList 成员

        void IBookList.Add(string BookName)

        {

            booklist.Add(BookName);

        }

        void IBookList.Append(string BookName)

        {

            booklist.Insert(booklist.Count, BookName);

        }

        void IBookList.Remove(int position)

        {

            booklist.Remove(position.ToString());

        }

        int IBookList.Count

        {

            get

            {

                return booklist.Count;

            }

        }

        string IBookList.this[int index]

        {

            get

            {

                return booklist[index];

            }

            set

            {

                 booklist[index] = value;

            }

        }

        #endregion

    }

    class text

    {

        static void Main()

        {

            //隐式调用。

            BookList bklist = new BookList();

            bklist.Add("¥¥¥隐式");

            Console.Write("实现隐式接口的例子:使用类:{0}", bklist[0]);

            IBookList ibklist = (IBookList)bklist;    //转变类型后,接连联内容也一同赋值给过来了。

            ibklist.Add("$$$$$隐式");// 这里索引是第二个了。

            Console.Write("实现隐式接口的例子:使用接口{0}", ibklist[1]);

          

           

            //显示调用   只能用接口调用。

            BookList2 bklist2 = new BookList2();

            //如果直接bklist2.Add("显示");这样就出错。如:

            //只能如下:

            IBookList Ibk = (IBookList)bklist2;

            Ibk.Add("$$$$显示接口");        //用接口增加

            Console.Write("实现显示接口的例子:使用接口{0} ", Ibk[0]);//用接口调用。

            Console.ReadLine();

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: