C#用params定義一維參數(shù)數(shù)組

參數(shù)數(shù)組,通過關鍵字params定義參數(shù)數(shù)組,params類型參數(shù)主要用于在對數(shù)組長度未知(可變)的情況下進行函數(shù)聲明,調(diào)用時可以傳入個數(shù)不同的實參,具備很好的靈活性。

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設、網(wǎng)站建設與策劃設計,川匯網(wǎng)站建設哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十載,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:川匯等地區(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ù)。

 

下面總結一些使用參數(shù)數(shù)組的注意事項:

1. 只能在一維數(shù)組上使用params關鍵字。

2. 不能重載一個只基于params關鍵字的方法。params關鍵字不構成方法的簽名的一部分。

  例③:

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)化技術,可以避免編譯器創(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://bm7419.com/article18/gihidp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站建設微信公眾號、虛擬主機搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司