中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# 用params定義一維參數數組

發布時間:2020-07-27 18:21:45 來源:網絡 閱讀:1432 作者:海灬未眠 欄目:編程語言

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


首先給出一個具體的例子介紹參數數組(params)的具體用法:

例①:

static void Main(string[] args)
{
    T('s', 'a', 'g', 'e', 'w', 'q');  //錯誤提示:T方法沒有采用6個參數的重載
    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個參數的重載
    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] + " ");
    }
}

例①、例②對比就會發現,參數數組前不加params的話就只能傳進去一個數組;加了params之后,可以傳進數組或者傳進多個參數。


 

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


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


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


  例③:

class Program
{
    public static void Min(int[] list)
    {
    }
        
    public static void Min( params int[] list) //編譯時錯誤提示:類型Program已經定義了一個名為Min的具有相同參數類型的成員
    {
    }
}

例③驗證了2.  



3. 不允許ref或out params數組。


 例④:

 public static void Min(out params int[] list) //編譯時錯誤提示:該參數上修飾符太多        
 {
           
 }
 
 public static void Max(ref params int[] list) //編譯時錯誤提示:該參數上修飾符太多        
 {
 
 }


4. params 數組必須是方法的最后一個參數(也就是只能有一個params數組參數)。


 例⑤:

 public static void Min( params int[] A,int[] B,int[] C)//錯誤提示:params參數必須是形參表中的最后一個參數
 {
           
 }
 
 public static void Max(int[] A,int[] B,params int[] C)
 {
 
 }


5. 編譯器會檢查并拒絕任何可能有歧義的重載。


6. 非params方法總是優先于一個params方法。也就是說,如果愿意,仍然可以為普通情況創建一個方法  的重載版本。


 例⑥:

public static void Min(int A,int B)
{
           
}
 
public static void Min(params int[] C)
{
 
}

第一個先被調用(聲明不帶params數組參數的方法,或許是一種有用的優化技術,可以避免編譯器創建和填充太多的數組)。


7. Black.Hole(黑洞),params object[] list。


 例⑦:

public static void Hole(params object[] C)
{
 
}


System.Object(object)是所有類的根,使用params object數組作為形參表中的參數來聲明一個方法,它能接受任意數量的object參數;換言之,不僅參數的數量是任意的,參數的類型也可以是任意的。所以,此方法稱為Black.Hole(黑洞)


①. 可以不向它傳遞任何參數;


②. 可以在調用它時,傳遞null作為參數;


③. 可以向它傳遞一個實際的數組。也就是說,可以人工創建本由編譯器來創建的數組;


④. 可以向它傳遞不同類型的其他任何參數,這些參數將自動封裝到一個object數組。

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西昌市| 松江区| 瑞昌市| 疏附县| 安庆市| 卢氏县| 铅山县| 清新县| 商河县| 贵南县| 沾益县| 永康市| 怀仁县| 乐至县| 绍兴市| 嘉峪关市| 登封市| 漾濞| 长海县| 波密县| 龙胜| 黄山市| 遂川县| 罗定市| 洛川县| 石嘴山市| 法库县| 阳城县| 保德县| 辛集市| 五台县| 阿尔山市| 时尚| 靖远县| 库尔勒市| 民丰县| 门头沟区| 冷水江市| 德化县| 金平| 婺源县|