VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#中关键字的base、this

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  C# 中的关键字之:base、this。base 关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。

  指定创建派生类实例时应调用的基类构造函数。

  基类访问只能在构造函数、实例方法或实例属性访问器中进行。

  示例:

  在派生类中调用基类方法。

以下是引用片段:
  //base关键字
  //访问基类成员
  usingSystem;
  publicclassBaseClass
  {
  protectedstring_className="BaseClass";
  publicvirtualvoidPrintName()
  {
  Console.WriteLine("ClassName:{0}",_className);
  }
  }
  classDerivedClass:BaseClass
  {
  publicstring_className="DerivedClass";
  publicoverridevoidPrintName()
  {
  Console.Write("TheBaseClassNameis{0}");
  //调用基类方法
  base.PrintName();
  Console.WriteLine("ThisDerivedClassis{0}",_className);
  }
  }
  classTestApp
  {
  publicstaticvoidMain()
  {
  DerivedClassdc=newDerivedClass();
  dc.PrintName();
  }
  }
  /**//*

  控制台输出:

  The BaseClass Name is BaseClass

  This DerivedClass is DerivedClass

  */

  在派生类中调用基类构造函数。

以下是引用片段:
  //keywords_base2.cs
  usingSystem;
  publicclassBaseClass
  {
  intnum;
  publicBaseClass()
  {
  Console.WriteLine("inBaseClass()");
  }
  publicBaseClass(inti)
  {
  num=i;
  Console.WriteLine("inBaseClass(int{0})",num);
  }
  }
  publicclassDerivedClass:BaseClass
  {
  //该构造器调用BaseClass.BaseClass()
  publicDerivedClass():base()
  {
  }
  //该构造器调用BaseClass.BaseClass(inti)
  publicDerivedClass(inti):base(i)
  {
  }
  staticvoidMain()
  {
  DerivedClassdc=newDerivedClass();
  DerivedClassdc1=newDerivedClass(1);
  }
  }
  /**//*

 

  控制台输出:

  in BaseClass()

  in BaseClass(1)

  */

  注意点:

  从静态方法中使用 base 关键字是错误的。

  base 主要用于面向对象开发的对态这方面,在示例2中有体现。

  this 关键字引用类的当前实例。

  以下是 this 的常用用途:

  限定被相似的名称隐藏的成员

  将对象作为参数传递到其他方法

  声明索引器

  示例:

  综合示例。

以下是引用片段:
  //this关键字
  //keywords_this.cs
  usingSystem;
  classEmployee
  {
  privatestring_name;
  privateint_age;
  privatestring[]_arr=newstring[5];
  publicEmployee(stringname,intage)
  {
  //使用this限定字段,name与age
  this._name=name;
  this._age=age;
  }
  publicstringName
  {
  get{returnthis._name;}
  }
  publicintAge
  {
  get{returnthis._age;}
  }
  //打印雇员资料
  publicvoidPrintEmployee()
  {
  //将Employee对象作为参数传递到DoPrint方法
  Print.DoPrint(this);
  }
  //声明索引器
  publicstringthis[intparam]
  {
  get{return_arr[param];}
  set{_arr[param]=value;}
  }
  }
  classPrint
  {
  publicstaticvoidDoPrint(Employeee)
  {
  Console.WriteLine("Name:{0}
Age:{1}",e.Name,e.Age);
  }
  }
  classTestApp
  {
  staticvoidMain()
  {
  EmployeeE=newEmployee("Hunts",21);
  E[0]="Scott";
  E[1]="Leigh";
  E[4]="Kiwis";
  E.PrintEmployee();
  for(inti=0;i<5;i++)
  {
  Console.WriteLine("FriendsName:{0}",E[i]);
  }
  Console.ReadLine();
  }
  }
  /**//*

 

  控制台输出:

  Name: Hunts

  Age: 21

  Friends Name: Scott

  Friends Name: Leigh

  Friends Name:

  Friends Name:

  Friends Name: Kiwis

  */

  注意点:

  由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。

  索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。

 

 

  控制台输出:

  in BaseClass()

  in BaseClass(1)

  */

  注意点:

  从静态方法中使用 base 关键字是错误的。

  base 主要用于面向对象开发的对态这方面,在示例2中有体现。

  this 关键字引用类的当前实例。

  以下是 this 的常用用途:

  限定被相似的名称隐藏的成员

  将对象作为参数传递到其他方法

  声明索引器

  示例:

  综合示例。

以下是引用片段:
  //this关键字
  //keywords_this.cs
  usingSystem;
  classEmployee
  {
  privatestring_name;
  privateint_age;
  privatestring[]_arr=newstring[5];
  publicEmployee(stringname,intage)
  {
  //使用this限定字段,name与age
  this._name=name;
  this._age=age;
  }
  publicstringName
  {
  get{returnthis._name;}
  }
  publicintAge
  {
  get{returnthis._age;}
  }
  //打印雇员资料
  publicvoidPrintEmployee()
  {
  //将Employee对象作为参数传递到DoPrint方法
  Print.DoPrint(this);
  }
  //声明索引器
  publicstringthis[intparam]
  {
  get{return_arr[param];}
  set{_arr[param]=value;}
  }
  }
  classPrint
  {
  publicstaticvoidDoPrint(Employeee)
  {
  Console.WriteLine("Name:{0}
Age:{1}",e.Name,e.Age);
  }
  }
  classTestApp
  {
  staticvoidMain()
  {
  EmployeeE=newEmployee("Hunts",21);
  E[0]="Scott";
  E[1]="Leigh";
  E[4]="Kiwis";
  E.PrintEmployee();
  for(inti=0;i<5;i++)
  {
  Console.WriteLine("FriendsName:{0}",E[i]);
  }
  Console.ReadLine();
  }
  }
  /**//*

 

  控制台输出:

  Name: Hunts

  Age: 21

  Friends Name: Scott

  Friends Name: Leigh

  Friends Name:

  Friends Name:

  Friends Name: Kiwis

  */

  注意点:

  由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。

  索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。

 



相关教程