|
C# для профессионалов. Том IIОбъявление ссылки использует просто квадратные скобки для указания, что размерность (ранг) массива будет единица. В C# ранг считается частью типа массива, в отличие от числа элементов. Ближайший эквивалент в C++ приведенного выше определения будет выглядеть так: double *pArray = new double[10]; Эта инструкция C++ действительно дает достаточно близкую аналогию, так как обе версии C++ и C# размещаются в куче. Отметим, что версия C++ является просто областью памяти, которая содержит 10 double, в то время как версия C# создает экземпляр полноценного объекта. Более простая стековая версия C++: doublе pArray[10]; не имеет аналога в C#, который использует реальный массив C#, хотя инструкция C# stackalloc может создать эквивалент этой инструкции с помощью указателей. Об этом мы будем говорить позже в разделе, в котором рассматривается ненадежный код. Массивы в C# можно явно инициализировать при создании экземпляра: double [] Array = new double[10] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 9.0, 10.0}; Существует также более короткая форма: double [] Array = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 9.0, 10.0}; Если массив не инициализирован явно, то будет автоматически вызываться конструктор по умолчанию для каждого из его элементов. (Элементы массива формально рассматриваются как поля-члены класса.) Это поведение отличается от C++, где не допускается никакой автоматической инициализации массивов, размещенных с помощью оператора new в куче (хотя C++ допускает это для массивов на основе стека) ...» |
Код для вставки книги в блог HTML
phpBB
текст
|
|