class classA
    {
        protected string name = "zhangsan";
    }
    class classB:classA
    {
        private string getName()
        {
            return this.name;// 1
            return base.name;// 2
        }
    }
这个地方大家趋向于用 1 还是 2 ?那个效率高呢?为什么

解决方案 »

  1.   

    个人感觉一样, 编译成中间件的时候 this.name 应该被改成了 base.name
      

  2.   

    我觉得 1 和 2是一样的。
    最后都是base.name。。
      

  3.   

    this 关键字将引用类的当前实例,可用于从构造函数、实例方法和实例访问器中访问成员,在静态方法、静态属性访问器或字段声明的变量初始值设定项中引用 this 是错误的。 
    base 关键字用于从派生类中访问基类的成员,调用基类上已被其他方法重写的方法。指定创建派生类实例时应调用的基类构造函数。基类访问只能在构造函数、实例方法或实例属性访问器中进行。从静态方法中使用base关键字是错误的。
      

  4.   

    lss的说的不错
    字数太少,顶
      

  5.   

    up this on normal way!
      

  6.   

    base常用于,在派生类对象初始化时和基类进行通信。 
    base可以访问基类的公有成员和受保护成员,私有成员是不可访问的。 
    this指代类对象本身,用于访问本类的所有常量、字段、属性和方法成员,而且不管访问元素是任何访问级别
    base是为了实现多态而设计的
      

  7.   

    http://www.cnblogs.com/anytao/archive/2007/05/04/must_net_06.html你必须知道的.net,楼主看看,针对于this,base。讲的很详细。
      

  8.   

    classB中未出现name的话,使用this和使用base是一样的效果,但是出现了的话就不一样了,特别是你在name属性中返回this.name是会出错的,但是可以返回base.name
      

  9.   

    既然你的派生类里面没有再定义name,那么两者返回已经内部处理都是一样的,没啥区别,而且,你只需要写 return name; 就可以了,何必去探究写 this.name 还是 base.name呢.