C 4 0 新特性之引數

2021-06-01 10:48:59 字數 2048 閱讀 5157

c#4.0中新加了幾種引數,今天來了解一下:

1.預設引數:

c# 4.0

現在對方法,構造器,以及索引器支援使用可預設的引數

當引數的預設值作為宣告的一部分被指定的時候,引數就是可預設的。

static

void

changevalue( 

intx, 

inty=3

)  //int y 有乙個預設的引數3,因此它是乙個可預設的引數           

當呼叫它的時候,我們可以顯示的傳遞給它兩個引數:

inti =2

;intj =

4;changevalue(i,j);

或者我們可以省略掉傳遞第二個引數,在這樣的情形下,其預設值

3就會被傳進去:

inti =2

;changevalue(i);

預設引數的使用有兩個簡單的限制,其一是:預設引數的宣告只能放在普通引數之後。

static

void

changevalue( 

intx, 

inty=3

,int

z) 

//這樣的編譯器會提示錯誤           

, y = ,z=

", x,y,z);

}但是,預設引數後面可以跟陣列引數(params引數),實際上無論在什麼情況下,params引數都只能是最後乙個宣告的引數。

預設引數的另乙個限制是:指定的預設值必須是乙個常量。

static

intc =0

;static

void

changevalue( 

intx, 

inty=(c

++))

//編譯器會提示y的預設值必須為編譯時常量的錯誤           

, y = 

", x,y);

}2.命名引數:

命名引數:呼叫方法時,可以不按位置傳遞引數,而是指定引數的命名來傳值

。static

void

changevalue( 

intx, 

inty)

, y = 

", x,y);

}static

void

main(

string

args)

結果為:

x=4,y=6

3.可選引數:

宣告方法中的引數時,可以為其設定預設值,那麼在呼叫該方法時,這種可選引數是可以忽略的

static

void

changevalue(

intx, 

inty =2

, intz =

3), y = ,z=

", x, y, z);

}static

void

main(

string

args)

結果為:x=2,y=1,z=3

x=4,y=1,z=3

這個方法有三個引數第乙個是必選引數,第二個和第三個是可選引數,他們都有乙個預設值。這種形式對固定引數的幾個方法過載很有用。

那麼如果我有乙個和可選引數方法不同引數相同的方法簽名的方法時,c#會怎麼處理呢?

static

void

changevalue(

intx,

inty)

, y = 

", x, y);

}static

void

changevalue(

intx=4

, inty =

2, intz =3

), y = ,z=

", x, y, z);

}static

void

main(

string

args)

結果:x=2,y=4,z=3

x=2,y=1,z=3

我先執行了嗎?x=2,y=1

實驗證明,當我過載了乙個和原可選引數相同命名的方法時,若執行引數相同,會優先執行沒有可選引數的方法。

C 4 0 新特性之引數

c 4.0中新加了幾種引數,今天來了解一下 1.預設引數 c 4.0 現在對方法,構造器,以及索引器支援使用可預設的引數 當引數的預設值作為宣告的一部分被指定的時候,引數就是可預設的。static void changevalue intx,inty 3 int y 有乙個預設的引數3,因此它是乙個...

C 4 0的新特性

先來看看dynamic的乙個例子 dynamic dyn 1 console.writeline dyn.gettype dyn 1.234 console.writeline dyn.gettype dyn ojlovecd console.writeline dyn.gettype 輸出 sys...

C 4 0新特性之元組Tuple

組元使用泛型來簡化乙個類的定義。public class point public int y the user customer data type.point p new point use the predefine generic tuple type.tuplep2 new tuple 1...