C# params 可变参数

一、简介

params 关键字用于定义一个方法的可变参数列表。它允许方法接受任意数量的参数,而不需要事先指定参数的数量。使用 params 关键字,可以更灵活地调用方法,而不必为每个不同数量的参数编写多个方法重载。 要使用 params 关键字,需要在方法的参数列表中将可变参数标记为 params 关键字。这个参数必须是一个数组类型,并且必须是方法参数列表的最后一个参数。当调用方法时,可以传递任意数量的参数,它们将被封装为一个数组,并作为 params 参数传递给方法。

二、用法

案例

namespace ParamsTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            PrintNumbers(1, 2, 3, 4, 5);

            Console.ReadKey();
        }

        static void PrintNumbers(params int[] numbers)
        {
            foreach (int number in numbers)
            {
                Console.WriteLine(number);
            }
        }
    }
}

运行:

在可变参数前面加其他的参数,也是可以的

namespace ParamsTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            PrintNumbers("fadf", 1, 2, 3, 4, 5);

            Console.ReadKey();
        }

        static void PrintNumbers(string name, params int[] numbers)
        {
            Console.WriteLine(name);
            foreach (int number in numbers)
            {
                Console.WriteLine(number);
            }
        }
    }
}

运行:

注意点1

可变参数必须为最后一个参数,而且必须是同类型的参数,比如下面的代码是 int 类型

注意点2

一个函数不能同时存在多个可变参数

注意点3

可变参数的值也可以不用传递,但是不建议这么做

代码:

namespace ParamsTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            PrintNumbers("fadf");

            Console.ReadKey();
        }

        static void PrintNumbers(string name, params int[] numbers)
        {
            Console.WriteLine(name);
            foreach (int number in numbers)
            {
                Console.WriteLine(number);
            }
        }
    }
}

运行:

三、模拟 Console.WriteLine 

Console.WriteLine 是 C# 常用的打印功能,基本是每天都会用到的,这个大家都很熟吧

Console.WriteLine("姓名:{0},年龄:{1}", "jack", 33);

现在用 params 可变参数来模拟一下这样的效果,代码:

namespace ParamsTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Print("姓名:{0},年龄:{1}", "jack", 33);

            Console.ReadKey();
        }

        static void Print(string content, params object[] objects)
        {
            string printContent = string.Format(content, objects);
            Console.WriteLine(printContent);
        }
    }
}

运行:

你可能会觉得,用 string.Format 谁不会啊,你这算啥本事啊,非常简单的好吧!

确实简单,其实微软也是这么写的,我只是照搬它的写法而已,哈哈哈。。。

 

结束

如果这个帖子对你有所帮助,欢迎 关注 + 点赞 + 留言,谢谢!

end

猜你喜欢

转载自blog.csdn.net/qq_38693757/article/details/131439833