成语大全网 - 汉语词典 - C#什么是显式调用?什么是隐式调用?

C#什么是显式调用?什么是隐式调用?

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

}

}

}