请教C#中接口的显示实现的问题? 不写接口名称,直接写public void DrawCircle(){} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想问1.public void DrawCircle()这一个方法为什么就可以实现了两个接口??2. public void DrawRectangle()和void IShape1.DrawRectangle()为什么可以同时存在呢?附:我是c#新人 C# 编程指南显式接口实现(C# 编程指南)如果类实现两个接口,并且这两个接口包含具有相同签名的成员,那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。例如:C# 复制代码interface IControl{ void Paint();}interface ISurface{ void Paint();}class SampleClass : IControl, ISurface{ // Both ISurface.Paint and IControl.Paint call this method. public void Paint() { }}然而,如果两个接口成员执行不同的函数,那么这可能会导致其中一个接口的实现不正确或两个接口的实现都不正确。可以显式地实现接口成员 -- 即创建一个仅通过该接口调用并且特定于该接口的类成员。这是使用接口名称和一个句点命名该类成员来实现的。例如:C# 复制代码public class SampleClass : IControl, ISurface{ void IControl.Paint() { System.Console.WriteLine("IControl.Paint"); } void ISurface.Paint() { System.Console.WriteLine("ISurface.Paint"); }}类成员 IControl.Paint 只能通过 IControl 接口使用,ISurface.Paint 只能通过 ISurface 使用。两个方法实现都是分离的,都不可以直接在类中使用。例如:C# 复制代码SampleClass obj = new SampleClass();//obj.Paint(); // Compiler error.IControl c = (IControl)obj;c.Paint(); // Calls IControl.Paint on SampleClass.ISurface s = (ISurface)obj;s.Paint(); // Calls ISurface.Paint on SampleClass.显式实现还用于解决两个接口分别声明具有相同名称的不同成员(如属性和方法)的情况:C# 复制代码interface ILeft{ int P { get;}}interface IRight{ int P();}为了同时实现两个接口,类必须对属性 P 和/或方法 P 使用显式实现以避免编译器错误。例如:C# 复制代码class Middle : ILeft, IRight{ public int P() { return 0; } int ILeft.P { get { return 0; } }}此类问题请先查阅msdn:http://msdn2.microsoft.com/zh-cn/library/ms173157(vs.80).aspx 一个简单的问题,如何将这些内容转成数据表? dataset里的数据刷新 long型怎样转成byte[] 型 [注]C# WINFORM DataSet导出EXCEL文件。给你的。 利用gdi+绘图,怎样实现导出可以不失真缩放的emf格式的文件 反对日本成为安理会常任理事国,大家快去签名 网络编程的调试问题? 初学C#.net 几个菜鸟问题 想知道武汉哪家公司作.net 应用? 如何查函数“参数”对应的数字? 系统还原之后treeview不能显示? 水晶报表的问题! 各位高手请进~~ :)
2. public void DrawRectangle()和void IShape1.DrawRectangle()为什么可以同时存在呢?
附:我是c#新人
显式接口实现(C# 编程指南)如果类实现两个接口,并且这两个接口包含具有相同签名的成员,那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。例如:C# 复制代码
interface IControl
{
void Paint();
}
interface ISurface
{
void Paint();
}
class SampleClass : IControl, ISurface
{
// Both ISurface.Paint and IControl.Paint call this method.
public void Paint()
{
}
}然而,如果两个接口成员执行不同的函数,那么这可能会导致其中一个接口的实现不正确或两个接口的实现都不正确。可以显式地实现接口成员 -- 即创建一个仅通过该接口调用并且特定于该接口的类成员。这是使用接口名称和一个句点命名该类成员来实现的。例如:C# 复制代码
public class SampleClass : IControl, ISurface
{
void IControl.Paint()
{
System.Console.WriteLine("IControl.Paint");
}
void ISurface.Paint()
{
System.Console.WriteLine("ISurface.Paint");
}
}类成员 IControl.Paint 只能通过 IControl 接口使用,ISurface.Paint 只能通过 ISurface 使用。两个方法实现都是分离的,都不可以直接在类中使用。例如:C# 复制代码
SampleClass obj = new SampleClass();
//obj.Paint(); // Compiler error.IControl c = (IControl)obj;
c.Paint(); // Calls IControl.Paint on SampleClass.ISurface s = (ISurface)obj;
s.Paint(); // Calls ISurface.Paint on SampleClass.显式实现还用于解决两个接口分别声明具有相同名称的不同成员(如属性和方法)的情况:C# 复制代码
interface ILeft
{
int P { get;}
}
interface IRight
{
int P();
}为了同时实现两个接口,类必须对属性 P 和/或方法 P 使用显式实现以避免编译器错误。例如:C# 复制代码
class Middle : ILeft, IRight
{
public int P() { return 0; }
int ILeft.P { get { return 0; } }
}
此类问题请先查阅msdn:
http://msdn2.microsoft.com/zh-cn/library/ms173157(vs.80).aspx