有一段代码: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();
        }
    }
}

解决方案 »

  1.   

    不能编译,,,这句啥意思
    void  IProjectDao.Insert()
            {
            }
      

  2.   

    /// <summary>
    /// DAO子类,实现DAO接口。
    /// </summary>
    public class B : BaseDAO ,IProjectDao
    { public void OtherMethod()
    {
    this.Insert();
    } public void Insert()
    {
    // TODO:  添加 B.Insert 实现
    } }
    这样就可以了
      

  3.   

    肯定不行,public class B要实现IProjectDao必须这样
    public class B:IProjectDao
    {
    }
      

  4.   

    试了
    public class B : BaseDAO ,IProjectDao
    { public void OtherMethod()
    {
    this.Insert();
    } public void Insert()
    {
    // TODO:  添加 B.Insert 实现
    } }这样可以,呵呵
      

  5.   

    呵呵,panda2fw2(我爱Monkey) 和 hedonister(冰戈V2.0) 的说法是对的。
      

  6.   

    void  IProjectDao.Insert()
            {
            }接口不能这样实现!改成:public void Insert(){}应该没有 问题!
      

  7.   

    TO  xiaoniaofei(xiaoniao) :但是我经过测试,
    void  IProjectDao.Insert()
    {
    }
    这样实现不会错的啊。
      

  8.   

    hehe,显式实现接口的问题!因为显式实现的接口成员是属于该类的,不能用该类的实例访问,也就是不能用 this 访问!看 MSDN 中显式实现接口成员的详细介绍。
      

  9.   

    但是我经过测试,
    void  IProjectDao.Insert()
    {
    }
    这样实现不会错的啊。
    ------------------------------------
    这样是不错,但在另一个方法里用 this 引用它就是你的不对了 :)
      

  10.   

    谢谢 bflovesnow()  ,我查了MSDN后,是有区别,把MSDN原文贴上,如有其它兄弟再遇上这种情况,可方便查看:
    MSDN中的解释如下:
    ---------------------------
    实现接口的类可以显式实现该接口的成员。当显式实现某成员时,不能通过类实例访问该成员,而只能通过该接口的实例访问该成员。