您好,登錄后才能下訂單哦!
參數(shù)數(shù)組,通過關(guān)鍵字params定義參數(shù)數(shù)組,params類型參數(shù)主要用于在對(duì)數(shù)組長度未知(可變)的情況下進(jìn)行函數(shù)聲明,調(diào)用時(shí)可以傳入個(gè)數(shù)不同的實(shí)參,具備很好的靈活性。
首先給出一個(gè)具體的例子介紹參數(shù)數(shù)組(params)的具體用法:
例①:
static void Main(string[] args) { T('s', 'a', 'g', 'e', 'w', 'q'); //錯(cuò)誤提示:T方法沒有采用6個(gè)參數(shù)的重載 T(new object[] { 'a', 'g' ,1,"小龍女"}); } public static void T(object[] c) { for (int i = 0; i < c.Length; i++) { Console.Write(c[i] + " "); } }
例②:
static void Main(string[] args) { T('s', 'a', 'g', 'e', 'w', 'q'); //錯(cuò)誤提示:T方法沒有采用6個(gè)參數(shù)的重載 T(new object[] { 'a', 'g' ,1,"小龍女"}); } public static void T(params object[] c) { for (int i = 0; i < c.Length; i++) { Console.Write(c[i] + " "); } }
例①、例②對(duì)比就會(huì)發(fā)現(xiàn),參數(shù)數(shù)組前不加params的話就只能傳進(jìn)去一個(gè)數(shù)組;加了params之后,可以傳進(jìn)數(shù)組或者傳進(jìn)多個(gè)參數(shù)。
下面總結(jié)一些使用參數(shù)數(shù)組的注意事項(xiàng):
1. 只能在一維數(shù)組上使用params關(guān)鍵字。
2. 不能重載一個(gè)只基于params關(guān)鍵字的方法。params關(guān)鍵字不構(gòu)成方法的簽名的一部分。
例③:
class Program { public static void Min(int[] list) { } public static void Min( params int[] list) //編譯時(shí)錯(cuò)誤提示:類型Program已經(jīng)定義了一個(gè)名為Min的具有相同參數(shù)類型的成員 { } }
例③驗(yàn)證了2.
3. 不允許ref或out params數(shù)組。
例④:
public static void Min(out params int[] list) //編譯時(shí)錯(cuò)誤提示:該參數(shù)上修飾符太多 { } public static void Max(ref params int[] list) //編譯時(shí)錯(cuò)誤提示:該參數(shù)上修飾符太多 { }
4. params 數(shù)組必須是方法的最后一個(gè)參數(shù)(也就是只能有一個(gè)params數(shù)組參數(shù))。
例⑤:
public static void Min( params int[] A,int[] B,int[] C)//錯(cuò)誤提示:params參數(shù)必須是形參表中的最后一個(gè)參數(shù) { } public static void Max(int[] A,int[] B,params int[] C) { }
5. 編譯器會(huì)檢查并拒絕任何可能有歧義的重載。
6. 非params方法總是優(yōu)先于一個(gè)params方法。也就是說,如果愿意,仍然可以為普通情況創(chuàng)建一個(gè)方法 的重載版本。
例⑥:
public static void Min(int A,int B) { } public static void Min(params int[] C) { }
第一個(gè)先被調(diào)用(聲明不帶params數(shù)組參數(shù)的方法,或許是一種有用的優(yōu)化技術(shù),可以避免編譯器創(chuàng)建和填充太多的數(shù)組)。
7. Black.Hole(黑洞),params object[] list。
例⑦:
public static void Hole(params object[] C) { }
System.Object(object)是所有類的根,使用params object數(shù)組作為形參表中的參數(shù)來聲明一個(gè)方法,它能接受任意數(shù)量的object參數(shù);換言之,不僅參數(shù)的數(shù)量是任意的,參數(shù)的類型也可以是任意的。所以,此方法稱為Black.Hole(黑洞)
①. 可以不向它傳遞任何參數(shù);
②. 可以在調(diào)用它時(shí),傳遞null作為參數(shù);
③. 可以向它傳遞一個(gè)實(shí)際的數(shù)組。也就是說,可以人工創(chuàng)建本由編譯器來創(chuàng)建的數(shù)組;
④. 可以向它傳遞不同類型的其他任何參數(shù),這些參數(shù)將自動(dòng)封裝到一個(gè)object數(shù)組。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。