您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 辅导 >> 正文    
  C#中的关键字之:base、this 【注册男护士专用博客】          

C#中的关键字之:base、this

www.nanhushi.com     佚名   不详 

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

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

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

  示例:

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

以下是引用片段:
  // base 关键字
  // 访问基类成员
  using System;
  public class BaseClass
  {
  protected string _className = "BaseClass";
  public virtual void PrintName()
  {
  Console.WriteLine("Class Name: {0}", _className);
  }
  }
  class DerivedClass : BaseClass
  {
  public string _className = "DerivedClass";
  public override void PrintName()
  {
  Console.Write("The BaseClass Name is {0}");
  //调用基类方法
  base.PrintName();
  Console.WriteLine("This DerivedClass is {0}", _className);
  }
  }
  class TestApp
  {
  public static void Main()
  {
  DerivedClass dc = new DerivedClass();
  dc.PrintName();
  }
  }
  /**//*

  控制台输出:

  The BaseClass Name is BaseClass

  This DerivedClass is DerivedClass

  */

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

以下是引用片段:
  // keywords_base2.cs
  using System;
  public class BaseClass
  {
  int num;
  public BaseClass()
  {
  Console.WriteLine("in BaseClass()");
  }
  public BaseClass(int i)
  {
  num = i;
  Console.WriteLine("in BaseClass(int {0})", num);
  }
  }
  public class DerivedClass : BaseClass
  {
  // 该构造器调用 BaseClass.BaseClass()
  public DerivedClass() : base()
  {
  }
  // 该构造器调用 BaseClass.BaseClass(int i)
  public DerivedClass(int i) : base(i)
  {
  }
  static void Main()
  {
  DerivedClass dc = new DerivedClass();
  DerivedClass dc1 = new DerivedClass(1);
  }
  }
  /**//*

  控制台输出:

  in BaseClass()

  in BaseClass(1)

  */

  注意点:

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

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

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

  以下是 this 的常用用途:

  1. 限定被相似的名称隐藏的成员
  2. 将对象作为参数传递到其他方法
  3. 声明索引器

  示例:

  综合示例。

以下是引用片段:
  // this 关键字
  // keywords_this.cs
  using System;
  class Employee
  {
  private string _name;
  private int _age;
  private string[] _arr = new string[5];
  public Employee(string name, int age)
  {
  // 使用this限定字段,name与age
  this._name = name;
  this._age = age;
  }
  public string Name
  {
  get { return this._name; }
  }
  public int Age
  {
  get { return this._age; }
  }
  // 打印雇员资料
  public void PrintEmployee()
  {
  // 将Employee对象作为参数传递到DoPrint方法
  Print.DoPrint(this);
  }
  // 声明索引器
  public string this[int param]
  {
  get { return _arr[param]; }
  set { _arr[param] = value; }
  }
  }
  class Print
  {
  public static void DoPrint(Employee e)
  {
  Console.WriteLine("Name: {0}\nAge: {1}", e.Name, e.Age);
  }
  }
  class TestApp
  {
  static void Main()
  {
  Employee E = new Employee("Hunts", 21);
  E[0] = "Scott";
  E[1] = "Leigh";
  E[4] = "Kiwis";
  E.PrintEmployee();
  for(int i=0; i<5; i++)
  {
  Console.WriteLine("Friends Name: {0}", E[i]);
  }
  Console.ReadLine();
  }
  }
  /**//*

  控制台输出:

  Name: Hunts

  Age: 21

  Friends Name: Scott

  Friends Name: Leigh

  Friends Name:

  Friends Name:

  Friends Name: Kiwis

  */

  注意点:

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

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

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目