【问题标题】:How do I pass a new array as a parameter in C#如何在 C# 中将新数组作为参数传递
【发布时间】:2021-01-15 12:59:05
【问题描述】:

我正在尝试使用以下构造函数:

public Tile(int top, int right, int bottom, int left, int _prefabIndex, bool _isDouble, int _villageIntake, bool _isControl, bool _isBuilder, bool[] _hasWater, int _homeVillage, int _isResevoir)

为了简单起见,我只尝试在一行代码中使用它。我试过使用:

newTile = new Tile(1, 3, 1, 3, 12, false, -1, true, false, {false, true, false, false}, -1, -1);

但我在 Boolean 数组参数上遇到编译错误。我知道我可以使用:

bool[] boolArray = {false, true, false, false};
newTile = new Tile(1, 3, 1, 3, 12, false, -1, true, false, boolArray, -1, -1);

但我想知道是否存在将新数组作为参数传递的正确语法?

【问题讨论】:

    标签: c# arrays .net parameter-passing


    【解决方案1】:

    为:

    private void Function(bool[] switches) ...
    

    做:

    Function(new []{ true, false });
    

    不过,还需要注意的是,如果可以将数组作为最后一个参数,则可以使用“params”关键字:

    private void ParamsFunction(params bool[] switches) ...
    

    ...然后这样做:

    ParamsFunction(true, false);
    

    【讨论】:

      【解决方案2】:

      你需要做这样的事情:

      new[]{false, true, false, false}
      

      原来是这样:

      Tile(1, 3, 1, 3, 12, false, -1, true, false, new[]{ false, true, false, false}, -1, -1);
      

      【讨论】:

      • 值得注意的是问题作者:传递给构造函数/方法没有什么特别之处。在任何允许使用此类表达式的地方,new [] { ... } 表达式将创建一个数组(具有推断类型)并生成对它的引用。
      【解决方案3】:

      你可以这样做:

      public bool SetPriority(new []{high, medium, low})
      {
      
      }
      

      【讨论】:

      猜你喜欢
      • 2017-03-19
      • 2011-12-30
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2010-10-01
      相关资源
      最近更新 更多