Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Приклад роботи з статичними масивами
На що варто звернути увагу, аналізуючи цей текст: · У процедурі показані різні способи оголошення масивів. Спочатку оголошуються одномірні масиви A, B й C, створювані конструктором. Значення елементів цих трьох масивів мають той самий тип int. Те, що вони мають однакове число елементів, відбулося з волі програміста, а не диктувалося вимогами мови. Помітьте, що після такого оголошення з ініціалізацією конструктором, всі елементи мають значення, у цьому випадку - нуль, і можуть брати участь в обчисленнях. · Массив x оголошений з явною ініціалізацією. Число й значення його елементів визначається константним масивом. · Масиви u й v оголошені з відкладеною ініціалізацією. У наступних операторах масив u ініціалізується в об'єктному стилі - елементи одержують його в циклі значення. · Зверніть увагу на закоментованний оператор присвоювання. На відміну від ініціалізації, використати константний масив у правій частині оператора присвоювання неприпустимо. Ця спроба приводить до помилки, оскільки v - це посилання, який можна привласнити посилання, але не можна привласнити константний масив. Посилання привласнити можна. Що відбувається в операторі присвоювання v = u? Це коректне посилальне присвоювання: хоча u й v мають різне число елементів, але вони є об'єктами одного класу. У результаті присвоювання пам'ять, відведена масиву v, звільниться, нею займеться тепер збирач сміття. Обидві посилання u й v будуть тепер указувати на той самий масив, так що зміна елемента одного масиву негайно відіб'ється на іншому масиві. · Далі визначається двовимірний масив w і робиться спроба виконати оператор присвоювання v=w. Це посилальне присвоювання некоректно, оскільки об'єкти w й v - різних класів і для них не виконується необхідне для присвоювання узгодження по типу. · Для підтримки роботи з масивами створений спеціальний клас Array, статичні методи якого виконують різні операції над масивами. Зокрема, у прикладі використані два методи цього класу, один із яких заповнює масив випадковими числами, другий - виводить масив на печать. Ось текст першого із цих методів: public static void CreateOneDimAr(int[] A){ for(int i = 0; i< A.GetLength(0); i++) A[i] = rnd.Next(1, 100); }//CreateOneDimArТут rnd - це статичне поле класу Array, оголошене в такий спосіб: private static Random rnd = new Random();Процедура печатки масиву з ім'ям name виглядає так: public static void PrintAr1(string name, int[] A){ Console.WriteLine(name); for(int i = 0; i< A.GetLength(0); i++) Console.Write(" \t" + name + " [{0}]={1}", i, A[i]); Console.WriteLine(); }//PrintAr1На рис. 11.1 показаний консольний вивід результатів роботи процедури TestDeclarations. Особливу увагу звернете на вивід, пов'язаний з масивами u й v.
|