调用显式接口方法
郁闷,代码如下:
class Program
{
public interface I
{
void X();
}
public class A : I
{
protected I L { get; }
#region I 成员
void I.X()
{
Console.WriteLine("....");
}
#endregion
}
public class B : A
{
public void Z()
{
L.X();
}
}
static void Main(string[] args)
{
B b = new B();
b.Z();
}
}
================================
错误如下:
================================
错误 1 “Ch12Ex01.Program.A.L.get”必须声明主体,因为它未标记为 abstract 或 extern C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\Ch12Ex01\Program.cs 16 29 Ch12Ex01
========================
哪错了?我找了一个下午都没找到答案,为什么系统类:CollectionBase可以这样定义:protected IList List { get; }.而我的类A为什么不能protected I L { get; }这样定义呢?
------解决方案--------------------A不是抽像类,也不是接口,方法都要有方法体才行。
再有你看到的CollectionBase的声明:protected IList List { get; }
只是类的定义,并不是CollectionBase的实现。实际上CollectionBase的List属性是如下声明的:
protected IList List
{
get
{
return this;
}
}
------解决方案--------------------protected I L { get; } => 这里的get为什么不写return????
除非你这个属性设置成为abstract.