1

我正在复习我的 C# 技能并阅读 C# 书籍。params我在数组章节中遇到了关键字。为什么有人会实际使用params关键字而不是仅将常规数组传递给方法。params我测试了两种方法都传递了一个带有和不带关键字的数组。他们都工作得很好。是否有任何现实世界的理由使用该params关键字?

这是我的代码:

using System;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] classname = new string[5] { "cs150", "cs250", "cs270", "cs300", "cs350" };
            Prints(classname);

            Console.Read();
        }

        public static void Prints(params string[] t)
        {
            foreach (var s in t)
            {
                Console.WriteLine(s);
            }
        }
    }
}

这是没有参数的代码:

using System;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] classname = new string[5] { "cs150", "cs250", "cs270", "cs300", "cs350" };
            Prints(classname);

            Console.Read();
        }

        public static void Prints(string[] t)
        {
            foreach (var s in t)
            {
                Console.WriteLine(s);
            }
        }
    }
}
4

5 回答 5

11

Console.WriteLine你觉得这些电话中哪一个更清楚?

Console.WriteLine("Hello {0}, you are {1}", person.Name, person.Age);

或者

Console.WriteLine("Hello {0}, you are {1}",
                  new object[] { person.Name, person.Age });

new[](在上述情况下,您甚至不能使用隐式类型数组 ( ),除非其中一个person.Nameperson.Age是类型object......如果它们都是类型string你会没事的,但它会创建一个字符串数组......)

我更喜欢第一个。阅读起来更简单。这就是全部params- 它只是允许调用者使用更简洁的语法。您仍然可以像在代码中那样以正常方式传递数组引用 - 但您也可以只写:

Prints("cs150", "cs250", "cs270", "cs300", "cs350");

...这又比声明一个单独的变量更容易阅读。

于 2012-10-20T19:43:28.900 回答
4

使用参数,您可以像这样调用您的方法:

Prints("1", "2", "3", "4", "5");

没有参数,你不能。

此外,在这两种情况下,您都可以使用数组作为参数调用该方法:

Prints(new string[] { "1", "2", "3", "4", "5" });

也就是说,params 允许您在调用方法时使用快捷方式。

于 2012-10-20T19:44:13.630 回答
2

使用参数,您可以在不创建数组的情况下调用方法:

Prints("cs150", "cs250", "cs270")
于 2012-10-20T19:43:52.783 回答
0

如果你传递没有“params”关键字的参数,那么你只能传递数组(数组大小)中指定的元素,但是使用“params”你不需要指定数组中的参数数量(数组大小)并且可以传递任意数量的根据需要调用函数的参数。

于 2012-10-29T11:08:44.540 回答
0

params 关键字的目的是

简化使用您创建的库或方法的编码人员的编码体验。

于 2012-10-21T14:18:34.533 回答