多维数组 vs 锯齿数组

4
我已经使用了一个多维数组,如下所示:

```我已经使用了一个多维数组,如下所示```

  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() 的代码吗? - kgzdev
@IkramTurgunbaev 实际上,我使用的数组是 SQL 参数,它们被传递给一个方法。 - user1599615
@IkramTurgunbaev 修改了一些代码,请查看。 - user1599615
如果您的数据是表格形式且大部分单元格已填充,则应忽略(并抑制)该消息。您的代码没问题。该警告的MSDN页面给出了这样做的原因是如果行的长度不同,可能会浪费空间。但是考虑到字符串是引用类型,如果有任何浪费,也不会很大。 - Peter - Reinstate Monica
@PeterA.Schneider 是的,但我只是好奇,谢谢。 - user1599615
2个回答

1
一个锯齿状数组是由多个数组组成的数组,因此您需要更改定义为:
string[][] Columns = { new string[] { "clientA", "clientB" }};

将数组访问方式从...

var value = Columns[0,0];

把...转换为...
var value = Columns[0][0];

您还可以选择抑制警告(右键单击它并选择所需选项)。根据MSDN,在某些情况下,这是可以安全地抑制的警告。在更改代码之前,请检查您的情况是否属于此类。

0

这应该可以工作:

 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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接