日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

20. C# -- Base, this 关键字

發(fā)布時間:2023/12/10 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20. C# -- Base, this 关键字 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Base關(guān)鍵字用途

  • 用于從派生類中訪問基類的成員,調(diào)用基類上已被其他方法重寫的方法。

  • 指定創(chuàng)建派生類實時應(yīng)調(diào)用的基類構(gòu)造函數(shù)。

  • 基類訪問只能在構(gòu)造函數(shù),實例方法或?qū)嵗龑傩栽L問器中進(jìn)行。

  • 從靜態(tài)方法中使用 base 關(guān)鍵字是錯誤的。

  • Base 主要用于面向?qū)ο箝_發(fā)的對態(tài)這方面。

using?System; using?System.Collections.Generic; using?System.Linq; using?System.Text; using?System.Threading.Tasks; namespace?ConsoleApplication1 {class?Program {//base的用法//1.?訪問基類成員,訪問基類方法public?class?BaseClass {protected?string?_calssName?=?"BaseClass";public?virtual?void?PrintName() {Console.WriteLine("The?BaseClass?Name?is?:?{0}",?_calssName);???????????????????? } }class?DerivedClass?:?BaseClass {public?string?_className?=?"DerivedClass";public?override?void?PrintName() {//Console.WriteLine("The?BaseClass?Name?is?{0}");//調(diào)用基類方法base.PrintName();Console.WriteLine("This?DerivedClass?is?{0}",_className); } }//2.?在派生類中調(diào)用基類構(gòu)造函數(shù)public?class?BaseClass2 {int?num;public?BaseClass2() {Console.WriteLine("in?BaseClass2()"); }public?BaseClass2(int?i) {num?=?i;Console.WriteLine("in?BaseClass2({0})",num); } }public?class?DerivedClass2?:?BaseClass2 {//?該構(gòu)造器調(diào)用?BaseClass2.BaseClass2()?public?DerivedClass2():?base() {?}//?該構(gòu)造器調(diào)用?BaseClass2.BaseClass2(int?i)?public?DerivedClass2(int?i):?base(i) {?} }static?void?Main(string?[]?args) {//訪問基類成員,訪問基類方法???DerivedClass?dc?=?new?DerivedClass();dc.PrintName();//在派生類中調(diào)用基類構(gòu)造函數(shù)DerivedClass2??dc2?=?new?DerivedClass2();DerivedClass2?dc2_b?=?new?DerivedClass2(2);Console.ReadLine(); } } }

控制臺輸出:

  The BaseClass Name is BaseClass

  This DerivedClass is DerivedClass

 in BaseClass2()

  in BaseClass2(1)


this的常用用途:

  • 限定被相似的名稱隱藏的成員

  • 將對象作為參數(shù)傳遞到其他方法

  • 聲明索引器, 索引器允許類或結(jié)構(gòu)的實例按照與數(shù)組相同的方式進(jìn)行索引。索引器類似于屬性,不同之處在于它們的訪問器采用參數(shù)。

  • 由于靜態(tài)成員函數(shù)存在于類一級,并且不是對象的一部分,因此沒有 this 指針。在靜態(tài)方法中引用 this 是錯誤的。

  • this 關(guān)鍵字引用類的當(dāng)前實例。

using?System; using?System.Collections.Generic; using?System.Linq; using?System.Text; using?System.Threading.Tasks; namespace?ConsoleApplication1 {class?Program {//this的用法//static?void?Main(string?[]?args)//{//????Console.ReadLine();//} }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對象作為參數(shù)傳遞到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(string?[]?args) {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


通用規(guī)則:

1、盡量少用或者不用base和this。除了避開子類的名稱沖突和在一個構(gòu)造函數(shù)中調(diào)用其他的構(gòu)造函數(shù)之外,base和this的使用容易引起不必要的結(jié)果。
2、在靜態(tài)成員中使用base和this都是不允許的。原因是,base和this訪問的都是類的實例,也就是對象,而靜態(tài)成員只能由類來訪問,不能由對象來訪問。
3、base是為了實現(xiàn)多態(tài)而設(shè)計的。
4、使用this或base關(guān)鍵字只能指定一個構(gòu)造函數(shù),也就是說不可同時將this和base作用在一個構(gòu)造函數(shù)上。
5、簡單的來說,base用于在派生類中訪問重寫的基類成員;而this用于訪問本類的成員,當(dāng)然也包括繼承而來公有和保護(hù)成員。
6、除了base,訪問基類成員的另外一種方式是:顯示的類型轉(zhuǎn)換來實現(xiàn)。只是該方法不能為靜態(tài)方法。


參考:
http://dev.yesky.com/380/7670880_2.shtml

http://www.cnblogs.com/netlyf/archive/2009/09/13/1565709.html? ?

轉(zhuǎn)載于:https://blog.51cto.com/57388/1651664

總結(jié)

以上是生活随笔為你收集整理的20. C# -- Base, this 关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。