【问题标题】:Optional Multidimensional Arrays as Arguments in C#可选的多维数组作为 C# 中的参数
【发布时间】:2014-02-26 20:42:04
【问题描述】:

我想声明一个具有 1 个必需参数和 4 个可选二维数组参数的函数,我该怎么做?我知道要使参数成为可选参数,我们应该在函数创建期间为其设置一个值。

我还看到我在下面做的事情是错误的,并且有一个"Array initializers can only be used in a variable or field initializer. Try using a new expression instead." 错误

private String communicateToServer(String serverHostname,
                               String[,] disk = new string[] {{"dummy","dummy"}},
                               String[,] hdd= new string[] {{"dummy","dummy"}}
                               String[,] nic= new string[] {{"dummy","dummy"}}
                               String[,] disk = new string[] {{"dummy","dummy"}}
)

【问题讨论】:

  • 改为默认值null,然后在函数中可以做到disk = disk ?? new string[] { .. };

标签: c# arrays multidimensional-array


【解决方案1】:

无法直接做到这一点,但你可以通过以下模式获得类似的效果

private String communicateToServer(String serverHostname,
                                   String[,] disk = null,
                                   String[,] hdd= null,
                                   String[,] nic= null) {

   disk = disk ?? new string[] {{"dummy","dummy"}},
   hdd= hdd ?? new string[] {{"dummy","dummy"}}
   nic= nic ?? new string[] {{"dummy","dummy"}}

    ...
}

基本上使用null 作为默认值,如果null 是转换为实际默认值的值。这确实意味着传递的显式null 将被解释为默认值。

【讨论】:

  • +1,因为这是我知道的唯一方法,但值得注意的是,这确实具有消除有目的地传入 null 的能力的副作用。
  • @McAden 最后一句中提到了副作用:)
  • 哦,所以我可以留下一个空检查器来实现我的目标,-removes dummies- if (hdd != null) { Do code with 2D Array values},谢谢伙计和欢呼= )
  • @JaredPar - 哎呀,不知何故我错过了。
猜你喜欢
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 2022-01-09
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
相关资源
最近更新 更多