C# 4.0 полное руководство - 2011
Шрифт:
class RevCopy {
static void Main { int i,j;
int[] numsl = new int[10]; int[] nums2 = new int[10];
for(i=0; i < numsl.Length; i++) numsl[i] = i;
Console.Write("Исходное содержимое массива: "); for(i=0; i < nums2.Length; i++)
Console.Write(numsl[i] + " ");
Console.WriteLine;
// Скопировать элементы массива numsl в массив nums2 в обратном порядке, if(nums2.Length >= numsl.Length) // проверить, достаточно ли
// длины массива nums2 for(i=0, j=numsl.Length-1; i < numsl.Length; i++, j--) nums2[j] = numsl[i];
Console.Write("Содержимое
Console.Write(nums2[i] + " ");
Выполнение этой программы дает следующий результат.
Исходное содержимое массива: 0123456789 Содержимое массива в обратном порядке: 9876543210
В данном примере свойство Length помогает выполнить две важные функции. Во-первых, оно позволяет убедиться в том, что длины целевого массива достаточно для хранения содержимого исходного массива. И во-вторых, оно предоставляет условие для завершения цикла for, в котором выполняется копирование исходного массива в обратном порядке. Конечно, в этом простом примере размеры массивов нетрудно выяснить и без свойства Length, но аналогичный подход может быть применен в целом ряде других, более сложных ситуаций.
Применение свойства Length при обращении со ступенчатыми массивами
Особый случай представляет применение свойства Length при обращении со ступенчатыми массивами. В этом случае с помощью данного свойства можно получить длину каждого массива, составляющего ступенчатый массив. В качестве примера рассмотрим следующую программу, в которой имитируется работа центрального процессора (ЦП) в сети, состоящей из четырех узлов.
// Продемонстрировать применение свойства Length // при обращении со ступенчатыми массивами.
using System;
class Jagged {
static void Main {
int[][] network_nodes = new int[4][]; network_nodes[0] = new int[3]; network_nodes[1] = new int[7]; network_nodes[2] = new int[2]; network_nodes[3] = new int[5];
int i, j;
// Сфабриковать данные об использовании ЦП. for(i=0; i < network_nodes.Length; i++)
for(j=0; j < network_nodes[i].Length; j++) network_nodes[i][j] = i * j + 70;
Console.WriteLine("Общее количество узлов сети: " + network_nodes.Length + "\n");
for(i=0; i < network_nodes.Length; i++) {
for(j=0; j < network_nodes[i].Length; j++) {
Console.Write("Использование в узле сети " + i +
" ЦП " + j + ": ");
Console.Write(network_nodes[i][j] + "% ");
Console.WriteLine ;
}
При выполнении этой программы получается следующий результат.
Общее количество узлов
сети:
: 4
Использование
в
узле
0
ЦП
0
70%
Использование
в
узле
0
ЦП
1
70%
Использование
в
узле
0
ЦП
2
70%
Использование
в
узле
1
ЦП
0
70%
Использование
в
узле
1
ЦП
1
71%
Использование
в
узле
1
ЦП
2
72%
Использование
в
узле
1
ЦП
3
73%
Использование
в
узле
1
ЦП
4
74%