【问题标题】:C# - How do I use an array of arrays as input for "parameterized" method?C# - 如何使用数组数组作为“参数化”方法的输入?
【发布时间】:2016-10-09 06:17:13
【问题描述】:

我想创建一个接受字符串数组类型的“参数化”输入对象的方法。比如:

public void MyMethod(params string[][] input)
{
   //...do stuff
}

我是这样调用这个方法的:

MyMethod({"arry1-elem1","arry1-elem2"}, {"arry2-elem1","arry2-elem2"}, {"arry3-elem1","arry3-elem2"});

但是,当我这样做时,我收到以下错误:

无效的表达式术语“{”

我在这里做错了什么。是不是不能输入一个隐式类型的数组作为输入?

【问题讨论】:

    标签: c# arrays methods parameters


    【解决方案1】:
    MyMethod(new string[]{"arry1-elem1","arry1-elem2"}, new string[]{"arry2-elem1","arry2-elem2"}, new string[]{"arry3-elem1","arry3-elem2"});
    

    当你试图传递它们时,你没有声明它们的类型。

    【讨论】:

    • 另外string 是多余的。你可以删除它。只需new[] 就足够了。
    • 是的,但我喜欢它一目了然。如果您喜欢将其排除在外,请随意,只是我的偏好^^
    • 后续问题,有没有办法强制将数组的嵌套数组限制为二维?例如public void MyMethod(params string[][2] input)
    • 不是特别的,您可以在方法中添加验证以检查并抛出(可能是 ArgumentException)如果有更多或更少,或者您可以创建一个只能用两个实例化的类。真的是你唯一的两个选择。
    【解决方案2】:

    更好的是,你不必说string

    MyMethod(new[]{"a","b"}, new[]{"c","d"});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-23
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多