熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C# 參考之訪問關鍵字:base、this

2022-06-13   來源: .NET編程 

  base
  
  base 關鍵字用於從派生類中訪問基類的成員
  
  調用基類上已被其他方法重寫的方法
  指定創建派生類實例時應調用的基類構造函數
  基類訪問只能在構造函數實例方法或實例屬性訪問器中進行
  
  示例
  
  在派生類中調用基類方法
  // base 關鍵字
  // 訪問基類成員
  using System;
  
  public class BaseClass
  {
   protected string _className = BaseClass;
  
   public virtual void PrintName()
   {
   ConsoleWriteLine(Class Name: {} _className);
   }
  }
  
  class DerivedClass : BaseClass
  {
   public string _className = DerivedClass;
  
   public override void PrintName()
   {
   ConsoleWrite(The BaseClass Name is {});
   //調用基類方法
   basePrintName();
   ConsoleWriteLine(This DerivedClass is {} _className);
   }
  }
  
  class TestApp
  {
   public static void Main()
   {
   DerivedClass dc = new DerivedClass();
   dcPrintName();
   }
  }
  
  /**//*
  控制台輸出:
  The BaseClass Name is BaseClass
  This DerivedClass is DerivedClass
  */
  在派生類中調用基類構造函數
  // keywords_basecs
  using System;
  public class BaseClass
  {
   int num;
  
   public BaseClass()
   {
   ConsoleWriteLine(in BaseClass());
   }
  
   public BaseClass(int i)
   {
   num = i;
   ConsoleWriteLine(in BaseClass(int {}) num);
   }
  }
  
  public class DerivedClass : BaseClass
  {
   // 該構造器調用 BaseClassBaseClass()
   public DerivedClass() : base()
   {
   }
  
   // 該構造器調用 BaseClassBaseClass(int i)
   public DerivedClass(int i) : base(i)
   {
   }
  
   static void Main()
   {
   DerivedClass dc = new DerivedClass();
   DerivedClass dc = new DerivedClass();
   }
  }
  

  /**//*
  控制台輸出:
  in BaseClass()
  in BaseClass()
  */
  
  注意點
  
  從靜態方法中使用 base 關鍵字是錯誤的
  base 主要用於面向對象開發的對態這方面在示例中有體現
  this
  this 關鍵字引用類的當前實例
  
  以下是 this 的常用用途
  
  限定被相似的名稱隱藏的成員
  將對象作為參數傳遞到其他方法
  聲明索引器
  示例
  
   綜合示例
  // this 關鍵字
  // keywords_thiscs
  using System;
  class Employee
  {
   private string _name;
   private int _age;
   private string[] _arr = new string[];
  
   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方法
   PrintDoPrint(this);
   }
  
   // 聲明索引器
   public string this[int param]
   {
   get { return _arr[param]; }
   set { _arr[param] = value; }
   }
  
  }
  class Print
  {
   public static void DoPrint(Employee e)
   {
   ConsoleWriteLine(Name: {}\nAge: {} eName eAge);
   }
  }
  
  class TestApp
  {
   static void Main()
   {
   Employee E = new Employee(Hunts );
   E[] = Scott;
   E[] = Leigh;
   E[] = Kiwis;
   EPrintEmployee();
  
   for(int i=; i<; i++)
   {
   ConsoleWriteLine(Friends Name: {} E[i]);
   }
  
   ConsoleReadLine();
   }
  }
  
  /**//*
  控制台輸出
  Name: Hunts
  Age:
  Friends Name: Scott
  Friends Name: Leigh
  Friends Name:
  Friends Name:
  Friends Name: Kiwis
  */
  注意點
  
  由於靜態成員函數存在於類一級並且不是對象的一部分因此沒有 this 指針在靜態方法中引用 this 是錯誤的
  索引器允許類或結構的實例按照與數組相同的方式進行索引索引器類似於屬性不同之處在於它們的訪問器采用參數


From:http://tw.wingwit.com/Article/program/net/201311/13464.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.