c# - 为什么要使用 params 关键字

标签 c# parameters console-application

我正在复习我的 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);
            }
        }
    }
}

最佳答案

您觉得对 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.Ageobject 类型...如果它们都是 string 类型你没问题,但它会创建一个字符串数组...)

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

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

...同样,这比声明一个单独的变量更易于阅读。

关于c# - 为什么要使用 params 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12992008/

相关文章:

c# - 在标签文本中显示文件名

c# - 堆栈 <> C# 中的实现

amazon-web-services - Cloudformation 拆分和导入值

c# - 在 SELECT IN 中使用 Oracle 参数的问题

c# - C# 控制台应用程序中的 public static void Main() 和 private static void Main() 有什么区别?

c# - 在 C#7 中,如何将 "roll my own"类任务类型与异步一起使用?

c# - 为 C# Express 用户识别潜在重复代码的好工具是什么?

.net - 将方法(返回值)作为参数传递是一件坏事吗?

c# - 在 .net 控制台应用程序中显示消息框

c# - RabbitMQ 和 SharedQueue 关闭