參數(shù)數(shù)組,通過關(guān)鍵字params定義參數(shù)數(shù)組,params類型參數(shù)主要用于在對數(shù)組長度未知(可變)的情況下進行函數(shù)聲明,調(diào)用時可以傳入個數(shù)不同的實參,具備很好的靈活性。
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)與策劃設(shè)計,川匯網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:川匯等地區(qū)。川匯做網(wǎng)站價格咨詢:13518219792
首先給出一個具體的例子介紹參數(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ù)組。
網(wǎng)站題目:C#用params定義一維參數(shù)數(shù)組
URL標題:http://aaarwkj.com/article18/gihidp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站建設(shè)、微信公眾號、虛擬主機、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)