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


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

  • 相关阅读:
    Flutter 复制文本到剪切板、从剪切板读取文本【转】
    CSS元素超出部分滚动,并隐藏滚动条【转】
    Flutter解决按钮请求防重复提交【转】
    CSS文字超出宽度自动换行【转】
    flutter 使用 url_launcher 唤起三方应用【转】
    Dart 基本数据类型与类型归属判断【转】
    JS 生成唯一字符串UUID【转】
    gtk+笔记
    Win32 API笔记
    utf-8与utf-16的区别
  • 原文地址:https://www.cnblogs.com/avril/p/1544227.html
Copyright © 2011-2022 走看看