base 和this的區別

2021-07-13 11:08:17 字數 2298 閱讀 8688

1.base的用法:用於派生類訪問基類成員-->

(1)呼叫基類上已經被過載的方法(在派生類中過載了該方法)。

(2)指定建立派生類例項時應呼叫基類的構造方法。

注意:base只能在構造方法、一般方法、例項屬性訪問器中使用。(不能再靜態方法中使用關鍵字base)

例如:

(1)

呼叫基類上已經被過載的方法

using system;
public class person

", name);
console.writeline("ssn: ", ssn);
}
}

class employee : person

", id);

}

}

class testclass

}

輸出為:---->
name: john l. malgraine

ssn: 444-55-6666

employee id: abc567efg

例如:

(2)指定建立派生類例項時應呼叫基類的構造方法。(包括和this的比較)

public

class

basecircle

public

basecircle(

double

arg)

}

public

class

subcircle : basecircle

public

subcircle(

double

a):base

(a)public

subcircle(

intk):

this

(1,2)

public

subcircle(

inti,

intj)

}

static

void

main(

string

args)

{

subcircle s1 =

newsubcircle();

subcircle s2 =

newsubcircle(1.1);

subcircle s3 =

newsubcircle(1);

輸出結果為:---->

no arguments

base

constructor!!!

sub

class

no argument constructor,actually call

base

constructor !!!

double

arg

base

constructor!!!

sub

class

with argument, actually call

base

double

constructor!!!

no arguments

base

constructor!!!

sub

class

with

inti&j argument!!!!

sub

class

with argument

intk, actually call sub

class

constructor

inti & j !!!

注意:this只是呼叫本身,但是這樣是需要呼叫一次基類沒有參的建構函式,所以會多顯示一條「基類的無引數建構函式. value:0」。

base是呼叫基類的有引數建構函式。

2.this用法:引用類的當前例項

其用於引用類的當前例項,也包括繼承而來的方法,通常可以隱藏this,msdn中的小結功能主要包括:

注意:由於靜態成員函式存在類一級,並不是物件的一部分,因此沒有this指標。在靜態方法中引用this是錯誤的。

hex和base32和base64的區別與聯絡

看個例子 package main import fmt import encoding hex import encoding base32 import encoding base64 func main 有些小夥伴可能有疑問,為啥要把 hello world 這麼明白的東西變成一串看不懂的東西...

base64和urlencode的區別和使用場景

1,無論是文字傳輸還是二進位制傳輸,其實均是將被傳輸物件轉化為二進位制位元組進行傳輸的 2,base64編碼是有一定用處的,比如email中,再比如 url中。url中,a b是會作為引數名 a 和引數值 b 傳送的,如果你傳送的引數b中有 那就會被瀏覽器認為是另乙個引數名了,而這不是你的本意。所以...

C 建構函式裡的base和this的區別

class baseclass numa public baseclass int i numa class childclassa baseclass numb public childclassa int i numb public childclassa int i,int j base i ...