【问题标题】:Multidimensional vs Jagged array多维与锯齿状数组
【发布时间】:2017-01-20 12:35:13
【问题描述】:

我使用了如下的多维数组

  string[,] Columns = { { "clientA", "clientB" }}

    if (Columns.Length != 0)
            {
                for (int i = 0; i < Columns.Length / 2; i++)
                {
                    bulkCopy.ColumnMappings.Add(Columns[i, 0], Columns[i, 1]);
                }
            }

代码分析后,我收到警告消息

Severity    Code    Description Project File    Line    Suppression State
Warning CA1814  'Order.GetLastOrderID()' uses a multidimensional array of  
'string[,]'. Replace it with a jagged array if possible.    

我在互联网上研究过锯齿状数组,但是如何用锯齿状数组替换我的数组。

【问题讨论】:

  • 能否分享GetLastOrderID() 代码
  • @IkramTurgunbaev 实际上我使用的数组是传递给方法的 sql 参数。
  • @IkramTurgunbaev 编辑了一些代码,请参阅
  • 如果您的数据是表格并且大多数单元格已填充,您应该忽略(并禁止显示)该消息。你的代码很好。 The MSDN page for that warning 给出的理由是,如果行的长度不同,它可能会浪费空间。但是考虑到字符串是引用类型,如果有的话,浪费并不大。
  • @PeterA.Schneider 是的,但我只是好奇,谢谢

标签: c# arrays multidimensional-array


【解决方案1】:

锯齿状数组是数组的数组,因此您将定义更改为:

string[][] Columns = { new string[] { "clientA", "clientB" }};

从...更改数组访问权限

var value = Columns[0,0];

...到...

var value = Columns[0][0];

您还可以选择禁止显示警告(右键单击它并选择您需要的选项)。 According to MSDN,这是在某些情况下可以安全抑制的警告。在更改代码之前检查您的情况是否如此。

【讨论】:

    【解决方案2】:

    这应该可行:

     string[][] Columns = { 
         new string[] { "ClientA", "ClientB" } 
     };
    

    如果您需要向数组中添加更多元素,则应如下所示:

    string[][] Columns = { 
        new string[] { "ClientA", "ClientB" },
        new string[] { "ClientC", "ClientD" },
        new string[] { "ClientE", "ClientF" } 
    };
    

    然后你可以使用下面的代码访问每个元素

    Columns[0][0] // Client A
    Columns[0][1] // Client B
    Columns[1][0] // Client C
    Columns[1][1] // Client D
    // etc.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 2018-07-26
      相关资源
      最近更新 更多