天天看點

C# 不确定參數個數關鍵字 params

今天接了個給項目寫Log日志管理類的活。具體功能是将項目中用到的log日志列印地方都統一調用管理類的接口,進而可以統一通過開關控制log列印。做的時候需要拼接多個字元參數組成字元串,字元參數個數不确定,可能有0到n個,如果不同字元數量都寫一個參數重載就不大合理,網上查了C#有params這個參數,可以實作傳不同參數個數的功能。下面是代碼示範。

using System;
using System.Text;

class Program
{
    static void Log(params string[] str)
    {
        StringBuilder stringBuilder = new StringBuilder();
        for(int i = 0; i < str.Length; i++)
        {
            stringBuilder.Append(str[i]);
        }
        Console.WriteLine(stringBuilder);
    }

    static void Main(string[] args)
    {
        Log("騎","馬","與","砍","殺","2020","年","發","售");

        Console.ReadLine();
    }
}

           

進階:params本質是将參數作為一個object[],是以每次都會建立一個數組生成引用類型,造成更多GC,是以當不需要傳入參數時候最好顯示傳入null,不然也會建立空的object[]數組。或者定義傳空或者1到3個左右參數的函數重載。