參數(shù)數(shù)組,通過關(guān)鍵字params定義參數(shù)數(shù)組,params類型參數(shù)主要用于在對數(shù)組長度未知(可變)的情況下進行函數(shù)聲明,調(diào)用時可以傳入個數(shù)不同的實參,具備很好的靈活性。
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、城中網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、成都商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為城中等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。首先給出一個具體的例子介紹參數(shù)數(shù)組(params)的具體用法:
例①:
static void Main(string[] args) { T('s', 'a', 'g', 'e', 'w', 'q'); //錯誤提示:T方法沒有采用6個參數(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'); //錯誤提示:T方法沒有采用6個參數(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] + " "); } }
例①、例②對比就會發(fā)現(xiàn),參數(shù)數(shù)組前不加params的話就只能傳進去一個數(shù)組;加了params之后,可以傳進數(shù)組或者傳進多個參數(shù)。
下面總結(jié)一些使用參數(shù)數(shù)組的注意事項:
1. 只能在一維數(shù)組上使用params關(guān)鍵字。
2. 不能重載一個只基于params關(guān)鍵字的方法。params關(guān)鍵字不構(gòu)成方法的簽名的一部分。
例③:
class Program { public static void Min(int[] list) { } public static void Min( params int[] list) //編譯時錯誤提示:類型Program已經(jīng)定義了一個名為Min的具有相同參數(shù)類型的成員 { } }
例③驗證了2.
3. 不允許ref或out params數(shù)組。
例④:
public static void Min(out params int[] list) //編譯時錯誤提示:該參數(shù)上修飾符太多 { } public static void Max(ref params int[] list) //編譯時錯誤提示:該參數(shù)上修飾符太多 { }
4. params 數(shù)組必須是方法的最后一個參數(shù)(也就是只能有一個params數(shù)組參數(shù))。
例⑤:
public static void Min( params int[] A,int[] B,int[] C)//錯誤提示:params參數(shù)必須是形參表中的最后一個參數(shù) { } public static void Max(int[] A,int[] B,params int[] C) { }
5. 編譯器會檢查并拒絕任何可能有歧義的重載。
6. 非params方法總是優(yōu)先于一個params方法。也就是說,如果愿意,仍然可以為普通情況創(chuàng)建一個方法 的重載版本。
例⑥:
public static void Min(int A,int B) { } public static void Min(params int[] C) { }
第一個先被調(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ù)來聲明一個方法,它能接受任意數(shù)量的object參數(shù);換言之,不僅參數(shù)的數(shù)量是任意的,參數(shù)的類型也可以是任意的。所以,此方法稱為Black.Hole(黑洞)
①. 可以不向它傳遞任何參數(shù);
②. 可以在調(diào)用它時,傳遞null作為參數(shù);
③. 可以向它傳遞一個實際的數(shù)組。也就是說,可以人工創(chuàng)建本由編譯器來創(chuàng)建的數(shù)組;
④. 可以向它傳遞不同類型的其他任何參數(shù),這些參數(shù)將自動封裝到一個object數(shù)組。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。