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

  }

  }

  }

posted @ 2014-12-11 10:14  sirzhang  阅读(343)  评论(0)    收藏  举报
AmazingCounters.com