• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#参考之访问关键字:base、this 

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

base

base 关键字用于从派生类中访问基类的成员:

  1. 调用基类上已被其他方法重写的方法。
  2. 指定创建派生类实例时应调用的基类构造函数。

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

示例:

  1. 在派生类中调用基类方法。
    • // 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()
          
              //调用基类方法
              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
      */
  2. 在派生类中调用基类构造函数。
    • // 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)
      */

 

注意点

  1. 从静态方法中使用 base 关键字是错误的。
  2. base 主要用于面向对象开发的对态这方面,在示例2中有体现。

this

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

以下是 this 的常用用途:

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

示例:

  1.  综合示例。
    • // 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     }

          
      public int Age
          
              get     }

          
      // 打印雇员资料
          public void PrintEmployee()
          
              // 将Employee对象作为参数传递到DoPrint方法
              Print.DoPrint(this);
          }


          
      // 声明索引器
          public string this[int param]
          
              get         set     }

      }

      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
      */

注意点

  1. 由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。
  2. 索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# 设计规范发布时间:2022-07-13
下一篇:
读 CLR via C# 总结(9) 索引器(有参属性)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap