把代码打一边,然后看注释会明白很多。(新手用)
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();
}
}
}