//прдемонстрировать применение свойства 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();
}
Console.WriteLine();
}
}
}
Неявно типизированные массивы
Как пояснялось в главе 3, в версии C# 3.0 появилась возможность объявлять неявно типизированные переменные с помощью ключевого слова var. Это переменные, тип которых определяется компилятором, исходя из типа инициализирующего выражения. Следовательно, все неявно типизированные переменные должны быть непременно инициализированы.
Неявно типизированный массив объявляется с помощью ключевого слова var, но без последующих квадратных скобок []. Кроме того, неявно типизированный массив должен быть непременно инициализирован, поскольку по типу инициализаторов определяется тип элементов данного массива. Все инициализаторы должны быть одного и того же согласованного типа.
var vals = new[] { 1, 2, 3, 4, 5 };
Обратите внимание на то, что в левой части приведенного выше выражения отсутствуют квадратные скобки []. А в правой части этого выражения, где происходит инициализация массива, квадратные скобки присутствуют. В данном контексте они обязательны.
Рассмотрим еще один пример, в котором создается двумерный массив типа double.
var vals = new[,] { { 1.1, 2.2 }, { 3.3, 4.4 }, { 5.5, 6.6 } };
В данном случае получается массив valsразмерами 2×3.
//продемонстрировать неявно типизированный ступерчатый массив.
using System;
class Jagged
{
static void Main()
{
var jagged = new[]{
new[]{1,2,3,4},
new[]{9,8,7},
new[]{11,12,13,14,15}
};
for (int j = 0; j < jagged.Length; j++)
{
for (int i = 0; i < jagged[j].Length; i++)
Console.Write(jagged[j][i] + " ");
Console.WriteLine();
}
}
}
Обратите особое внимание на объявление массива jagged.
var jagged = new[]{
new[]{1,2,3,4},
new[]{9,8,7},
new[]{11,12,13,14,15}
};
Оператор new[] используется в этом объявлении двояким образом. Во-первых, этот оператор создает массив массивов. И во-вторых, он создает каждый массив в отдельности, исходя из количества инициализаторов и их типа.