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

2016-02-19 13:47 3 1 收藏

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的C# 中的关键字之:base、this,希望大家看完后能赶快学习起来。

【 tulaoshi.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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  This DerivedClass is DerivedClass

  */

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

以下是引用片段:
  // 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)

  */

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  注意点:

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

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

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

  以下是 this 的常用用途:

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

  示例:

  综合示例。

以下是引用片段:
  // 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; i5; 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

  */

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  注意点:

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

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

  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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  This DerivedClass is DerivedClass

  */

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

以下是引用片段:
  // 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)

  */

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  注意点:

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

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

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

来源:http://www.tulaoshi.com/n/20160219/1605214.html

延伸阅读
C99中新增加了restrict修饰的指针: 由restrict修饰的指针是最初唯一对指针所指向的对象进行存取的方法, 仅当第二个指针基于第一个时,才能对对象进行存取。 对对象的存取都限定于基于由restrict修饰的指针表达式中。 由restrict修饰的指针主要用于函数形参,或指向由malloc()分配的内存空间。 restrict数据类型不改变程序的语义。 编译器...
JScript的语法教程里面说在声明变量时忽略var要害字是完全合法的。但是事实经常又证实想当然的结果是不可靠的。 看看下面这几个例子的结果就知道问题了: script language="javascript" var var00 = 0; document.write(var00 + 'br');var var01 = 1; function foo() { document...
红点添加关键字   红点添加关键字方法。在直播间直播的时候经常有粉丝发一些不文明的词语?小伙伴们可以在直播间里添加关键字过滤,一旦出现关键字,就会屏蔽掉哦,那么怎么添加关键字呢?现在图老师小编就教大家红点怎么添加关键字。 1)打开红点,点击右上角的,然后点击下方的;(如下图) 2)点击下方的,然后点击...
标签: 软件教程
为自己的家人、朋友、工作等等创立一个群是非常有必要的,每个群都关键词,这样可以方便别人寻找,比如你要创建一个英语的学习群,想让跟多的人加进来一起交流,这个时候qq的关键字就非常起作用了,那qq群怎么设置关键字,看看小编给大家分享的qq群设置关键字教程吧! 第一步、创建一个QQ群,先要创建一个QQ群,...
火柴如何订阅关键字   火柴如何订阅关键字?小伙伴们在火柴小组里面都有热门发布,有时候自己创建的小组里的热门很少且东西很杂?那是因为没有订阅关键字,订阅了关键字系统会准确的把热门发布到你的小组里,现在小编就教小伙伴们订阅关键字。 1)打开火柴,点击下方的然后点击打开你要订阅的小组; 2)点击右上角的...

经验教程

706

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部