zoukankan      html  css  js  c++  java
  • C#接口的隐式和显示调用,区别和实例

    把代码打一边,然后看注释会明白很多。(新手用)

    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();
            }
        }
    }


    你问我生命中还有什么可追寻?

  • 相关阅读:
    使用makeself创建安装文件
    Java类的多态机制
    LintCode 带最小值操作的栈
    js限制checkbox选中个数
    Java Collection框架—List set map 的异同世界
    利用runtime动态生成对象?
    2014-3-4 大规模无缝水陆导航图
    atitit。全局变量的设计与实现 java php的异同
    PHP从入门到精通(四)
    PHP从入门到精通(三)
  • 原文地址:https://www.cnblogs.com/avril/p/1544227.html
Copyright © 2011-2022 走看看