【问题标题】:Is there an easier way of passing a group of variables as an array有没有更简单的方法将一组变量作为数组传递
【发布时间】:2010-12-07 23:18:16
【问题描述】:

我要做的是为我的 StreamWriter 实例编写一个专用方法,而不是在程序中的随机点使用它。这会本地化调用类的位置,因为当前的完成方式存在一些错误。

这是我目前拥有的:

public static void Write(string[] stringsToWrite) {

    writer = new StreamWriter(stream);

    writer.Write("hello");

    foreach (string stringToWrite in stringsToWrite) {
        writer.Write(" " + stringToWrite + " ");
    }

    writer.Flush();
}

注意:stream 是 TcpClient 的一个实例

有了这个,我可以传递要写入的变量数组,但我不能使用与现有方法相同的方法调用:

writer.WriteLine("hello {0} {1} {2}", variable1, variable2, variable 3);
writer.Flush();

如果我能够将 x 个变量传递给方法并让循环以这种方式编写每个变量,那就太好了,但是 .NET 中的可选参数直到 v4.0 才出现,这仍然是处于测试阶段。

有什么想法吗?

【问题讨论】:

    标签: c# .net parameters arguments


    【解决方案1】:

    你可以看看params keyword

    public static void Write(params string[] stringsToWrite) {
        ...    
    
        foreach (string stringToWrite in stringsToWrite) {
            writer.Write(" " + stringToWrite + " ");
        }
    
        ...
    }
    

    那么,使用正是你想要的。

    【讨论】:

      【解决方案2】:

      在你的方法中使用 params 关键字:

      public static void Write(params string[] stringsToWrite) {
      

      那你可以说

      Write("Hello", "There")
      

      你仍然可以传入一个普通数组,就像WriteLine 接受一个一样。

      【讨论】:

        【解决方案3】:

        params(已经提到)在大多数情况下是显而易见的答案。请注意,您也可以考虑替代方案,例如:

        static void Main() {
            string s = Format("You are {age} years old and your last name is {name} ",
                new {age = 18, name = "Foo"});
        }
        

        如图here和讨论更多here

        【讨论】:

          【解决方案4】:

          使用params:

          public static void Write(params string[] stringsToWrite) {
              ... // your code here
          }
          

          调用Write(a, b, c),相当于Write(new string[] {a, b, c})

          【讨论】:

            【解决方案5】:

            使用参数数组!

            public void Write(params string[] oStrings)
            {
            }
            

            【讨论】:

              猜你喜欢
              • 2022-01-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-11-16
              • 2011-10-26
              • 1970-01-01
              相关资源
              最近更新 更多