A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wxfyzt 中级黑马   /  2014-2-9 22:19  /  1247 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wxfyzt 于 2014-2-10 08:31 编辑

最好是通过具体的例子给介绍一下?

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

3 个回复

倒序浏览
关于使用到了两个C#关键字this和base。
1,C# "this " keyword
其作用引用类的当前实例,其实看了下面这个例子就好理解了。
主要三个作用:当前实例、参数传递和索引器
1.1 当前实例
class Team
{
///成员变量
private string name;
///构造函数
public Team(string name)
{
this.name = name;
}
}
在这里因为是要将参数的name值传入Team类或者说对象的name成员变量中.
在这里通过使用this可以表明name的对象是当前的实例,也就是Team对象,而不是参数name.
1.2 参数传递
另外还有一个作用就是可以做为 '指针 '来使用,可以将当前对象元素按照引用参数方式传递。
例如:
class A
{
public string name = "liangzhen ";
public A(){
}
}
class B
{
private A a;
public void B(A a)
{
this.a = a;
}
public void Change()
{
this.a.name = "kathy ";
}
}
class Demo
{
static void Main()
{
A a = new A();
   B b = b(a);
b.Change();
}
}
这里完成的是一个引用参数传递,在这里如果B对象中执行Change方法后,B和A所对于得实例中的name都将改变为 "kathy ".
3,索引器
最简单的知识,不多说了看一个例子
public object this [int param]
{
get { return array[param]; }
set { array[param] = value; }
}
2,C# "base " keyword
base其实最大的使用地方在面相对性开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法。
例如,
关于base调用基类构造函数
public class A
{
public A()
{
Console.WriteLine( "Build A ");
}
}
public class B:A
{
public B():base()
{
Console.WriteLine( "Build B ");
}
}
如果创建一个B的实例对象,获得结果将是同时打印Build A和Build B.
关于base在派生类中调用基类的方法。
public class A
{
public virtual void Hello()
{
Console.WirteLine( "Hello ");
}
}
public class B : A
{
public override void Hello()
{
base.Hello();//调用基类的方法,显示Hello
Console.WirteLine( "World ");
}
}
这样如果程序调用B.Hello()获得的效果将会使Hello World.
最后补充下,根据MSDN Library介绍来看这两个关键字都是属于[访问关键字]类型。 希望搬运来对你有用~

评分

参与人数 1技术分 +2 收起 理由
电脑大牛 + 2

查看全部评分

回复 使用道具 举报
1. base关键字主要是为派生类调用基类成员提供一个简写的方法。
    calss A
    {
         public void F(){
                   //F的具体执行代码
         }
         public int this[int nIndex]{
                  get{};
                  set{};
         }
    }
    class B
    {
         public void G(){
                 int x = base[0];
                 base.F();
      }
   }
2. 类B从类A中继承,B的方法G中调用了A的方法F和索引指示器。
3. 方法F在进行编译时等价于:
    public void G(){
         int x =(A(this))[0];
                   (A(this)).F();
   }
4. 使用base关键字对基类成员的访问格式为:
     base.identifier
     bse[expression-list]


评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
this主要是调用当前对象,base则是调用基类对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马