有一段代码:1个抽象类,1个接口,1个实现类。大家看看有什么问题?是否能编译通过?为什么?
-----------------------------
using System;namespace Sample
{
/// <summary>
/// DAO接口
/// </summary>
public interface IProjectDao
{
/// <summary>
/// 向Project表中插入记录
/// </summary>
void Insert();
} /// <summary>
/// DAO基类
/// </summary>
public abstract class BaseDAO
{
public void DoSomething()
{
}
} /// <summary>
/// DAO子类,实现DAO接口。
/// </summary>
public class B : BaseDAO, IProjectDao
{
void IProjectDao.Insert()
{
} public void OtherMethod()
{
this.Insert();
}
}
}
-----------------------------
using System;namespace Sample
{
/// <summary>
/// DAO接口
/// </summary>
public interface IProjectDao
{
/// <summary>
/// 向Project表中插入记录
/// </summary>
void Insert();
} /// <summary>
/// DAO基类
/// </summary>
public abstract class BaseDAO
{
public void DoSomething()
{
}
} /// <summary>
/// DAO子类,实现DAO接口。
/// </summary>
public class B : BaseDAO, IProjectDao
{
void IProjectDao.Insert()
{
} public void OtherMethod()
{
this.Insert();
}
}
}
void IProjectDao.Insert()
{
}
/// DAO子类,实现DAO接口。
/// </summary>
public class B : BaseDAO ,IProjectDao
{ public void OtherMethod()
{
this.Insert();
} public void Insert()
{
// TODO: 添加 B.Insert 实现
} }
这样就可以了
public class B:IProjectDao
{
}
public class B : BaseDAO ,IProjectDao
{ public void OtherMethod()
{
this.Insert();
} public void Insert()
{
// TODO: 添加 B.Insert 实现
} }这样可以,呵呵
{
}接口不能这样实现!改成:public void Insert(){}应该没有 问题!
void IProjectDao.Insert()
{
}
这样实现不会错的啊。
void IProjectDao.Insert()
{
}
这样实现不会错的啊。
------------------------------------
这样是不错,但在另一个方法里用 this 引用它就是你的不对了 :)
MSDN中的解释如下:
---------------------------
实现接口的类可以显式实现该接口的成员。当显式实现某成员时,不能通过类实例访问该成员,而只能通过该接口的实例访问该成员。