不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
C#中显/隐式实现接口及其访问方法
编辑:dnawo 日期:2007-12-18
1.隐式实现的接口
结果:
引用内容
说明:从实例中我们可以看到用隐式实现的接口既可以通过类来访问,也可以通过接口来访问!
2.显式实现的接口
结果:
引用内容
说明:从实例中我们可以看到用显式实现的接口只能通过接口来访问,如果试图通过类来访问会出错:““ConsoleApplication1.EditBox”并不包含“Paint”的定义。”
3.同时用显/隐式实现接口会怎么样?
结果:
引用内容
说明:当同时用显/隐式实现接口时,显式才是真正的接口实现方法!
4.结论
在多数情况下,我们都是用隐式来实现接口,此时既可以通过类来访问,又可以通过接口来访问,而通过显式实现的接口则只能通过接口来访问,总结一下就是:当显式实现方式存在时,隐式实现方式就失效了。但这不能表示显式实现方式就不好,当一个类实现的多个接口中具有相同的方法时,用显式方式来专门实现某个接口的方法时就显得非常有用!
5.参考文章
[1] C#中的接口:http://zhenyulu.cnblogs.com/archive/2006/04/18/377705.html
复制内容到剪贴板
程序代码

interface IControl
{
void Paint();
}
public class EditBox : IControl
{
public void Paint()
{
Console.WriteLine("Pain method is called!");
}
}
class Test
{
static void Main()
{
EditBox editbox = new EditBox();
editbox.Paint();
((IControl)editbox).Paint();
Console.ReadKey();
}
}
{
void Paint();
}
public class EditBox : IControl
{
public void Paint()
{
Console.WriteLine("Pain method is called!");
}
}
class Test
{
static void Main()
{
EditBox editbox = new EditBox();
editbox.Paint();
((IControl)editbox).Paint();
Console.ReadKey();
}
}
结果:

Pain method is called!
Pain method is called!
Pain method is called!
说明:从实例中我们可以看到用隐式实现的接口既可以通过类来访问,也可以通过接口来访问!
2.显式实现的接口
复制内容到剪贴板
程序代码

interface IControl
{
void Paint();
}
public class EditBox : IControl
{
void IControl.Paint()
{
Console.WriteLine("IControl.Pain method is called!");
}
}
class Test
{
static void Main()
{
EditBox editbox = new EditBox();
//editbox.Paint();//通过类访问会出错
((IControl)editbox).Paint();
Console.ReadKey();
}
}
{
void Paint();
}
public class EditBox : IControl
{
void IControl.Paint()
{
Console.WriteLine("IControl.Pain method is called!");
}
}
class Test
{
static void Main()
{
EditBox editbox = new EditBox();
//editbox.Paint();//通过类访问会出错
((IControl)editbox).Paint();
Console.ReadKey();
}
}
结果:

IControl.Pain method is called!
说明:从实例中我们可以看到用显式实现的接口只能通过接口来访问,如果试图通过类来访问会出错:““ConsoleApplication1.EditBox”并不包含“Paint”的定义。”
3.同时用显/隐式实现接口会怎么样?
复制内容到剪贴板
程序代码

interface IControl
{
void Paint();
}
public class EditBox : IControl
{
void IControl.Paint()
{
Console.WriteLine("IControl.Pain method is called!");
}
public void Paint()
{
Console.WriteLine("Pain method is called!");
}
}
class Test
{
static void Main()
{
EditBox editbox = new EditBox();
editbox.Paint();
((IControl)editbox).Paint();
Console.ReadKey();
}
}
{
void Paint();
}
public class EditBox : IControl
{
void IControl.Paint()
{
Console.WriteLine("IControl.Pain method is called!");
}
public void Paint()
{
Console.WriteLine("Pain method is called!");
}
}
class Test
{
static void Main()
{
EditBox editbox = new EditBox();
editbox.Paint();
((IControl)editbox).Paint();
Console.ReadKey();
}
}
结果:

Pain method is called!
IControl.Pain method is called!
IControl.Pain method is called!
说明:当同时用显/隐式实现接口时,显式才是真正的接口实现方法!
4.结论
在多数情况下,我们都是用隐式来实现接口,此时既可以通过类来访问,又可以通过接口来访问,而通过显式实现的接口则只能通过接口来访问,总结一下就是:当显式实现方式存在时,隐式实现方式就失效了。但这不能表示显式实现方式就不好,当一个类实现的多个接口中具有相同的方法时,用显式方式来专门实现某个接口的方法时就显得非常有用!
5.参考文章
[1] C#中的接口:http://zhenyulu.cnblogs.com/archive/2006/04/18/377705.html
评论: 0 | 引用: 0 | 查看次数: 4405
发表评论
请登录后再发表评论!