何时将数组的长度保存到C#中的局部变量中

在阅读Habr时,我遇到了“ 将数组的长度保存到C#中的局部变量中是否值得? ”(这在“最佳”部分中)。 在我看来,这是一个愚蠢的问题,不是完全正确的度量(为什么没有嵌套循环的度量?)和一个奇怪的结论。

如果我们有多个嵌套循环,则C#中数组的长度应存储在一个单独的变量中,下面是一个示例。

这是一个简单的测试代码,没有将数组的长度存储到变量中:

Random rnd1 = new Random(DateTime.UtcNow.Millisecond); int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue]; for (int i = 0; i < arr1.GetLength(0); i++) { for (int j = 0; j < arr1.GetLength(1); j++) { arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue); } } 

这是将数组的长度保存为变量的相同代码:

 Random rnd1 = new Random(DateTime.UtcNow.Millisecond); int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue]; int len1 = arr1.GetLength(0), len2 = arr1.GetLength(1); for (int i = 0; i < len1; i++) { for (int j = 0; j < len2; j++) { arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue); } } 

将数组的长度保存到变量中的代码(第二个选项)运行速度提高约15%。

在C#或.Net上或多或少的厚书中都可以找到类似的答案,但与此同时,有才华的人在Habré上发布了此答案,并且在注释中没有人告诉他C#中数组的长度存储在变量中,通常用于嵌套循环,并且确实存在意义。

我只想在此处发表评论,但我不能未经注册就留下评论,事实证明,注册后,我也不能在此处发表评论(因为自发布以来已经过去了10天)。 也许有人会注意到此注释并将其复制为注释或类似内容。

Source: https://habr.com/ru/post/zh-CN438516/


All Articles