C#关键字this和base 區別

关于使用到了两个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介绍来看这两个关键字都是属于[访问关键字]类型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值