Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб роб 2.doc
Скачиваний:
0
Добавлен:
14.11.2019
Размер:
111.62 Кб
Скачать

Оператор foreach

Вище ми розглядали такий простір імен, як System. Це простір імен містить у свою чергу інші простори імен. Розглянемо такий namespace, як System.Collections. У цей простір імен включений ряд класів, що дозволяють організовувати об'єкти різного типу в черги, стеки, словники і багато що інше. Розглянемо один з класів, що входять в System.Collections, який дозволяє організовувати масиви. Це клас ArrayList. Він має багато методів, наприклад Add, який дозволяє додавати в нього елементи. Припустимо, що ми маємо об'єкт цього класу і хочемо дістати доступ до всіх його елементів послідовно. Код, який це робить, показаний нижче.

using System.Collections;

ArrayList numbers = new ArrayList();

for (int i=0; i<10; i++)

{

numbers.Add(i);

}

. . . .

for (int i=0; i<numbers.Count; i++)

{

int number=(int) numbers[i];

Console.WriteLine(number);

}

Частина коду, яка займається прочитуванням елементів колекції, є достатньо громіздкою. Для того, щоб полегшити запис, можна використовувати оператора foreach, як показано нижче.

foreach (int number in numbers)

{

Console.WriteLine (number);

}

Цей оператор проходиться по всіх елементах колекції і заносить кожен елемент в змінну number, після цього виконує код, взятий у фігурні дужки (дужки в цьому випадку можна опустити).

Основною відмінністю від оператора for є те, що ви не можете модифікувати елементи колекції, використовуючи оператора, foreach, оскільки змінна number призначена тільки для читання, тому код нижче приведе до помилки компілювання.

foreach (int number in numbers)

{

number ++; // помилка

Console.WriteLine (number);

}

Доповнення:

С# дозволяє використовувати, при програмуванні елементів графічного інтерфейсу, функції WinAPI. Наприклад виклик функцій Win32 із платформи .NET можна зробити так:

  1. Створимо у своїй папці папку MessageBox

  2. Cтворимо текстовий файл <ім’я>.cs із такою програмою на C#

using System;

using System.Runtime.InteropServices;

namespace MessageBox

{

class Class1

{

[DllImport("user32.dll", EntryPoint="MessageBox", SetLastError=true, CharSet = CharSet.Auto)]

public static extern int MessageBox(int hWnd, String strMessage, String strCaption,

uint uiType);

[STAThread]

static void Main(string[] args)

{

MessageBox(0, "Наш виклик функції Win32!", " Виклик DLL з .NET", 0);

}

}

}

Дослідимо виведення на текстовий екран дійсного числа

using System;

namespace Float2String

{

class Class1

{

[STAThread]

static void Main(string[] args)

{

double d = 3.1415926;

Console.WriteLine("{0}", d); // 3,1415926

Console.WriteLine("{0:F2}", d); // 3,14

Console.WriteLine(string.Format("{0}", d)); // 3,1415926

Console.WriteLine(string.Format("{0:F3}", d)); // 3,142

Console.WriteLine(d.ToString("F2")); // 3,14

Console.WriteLine(d.ToString("E")); // 3,141593E+000

Console.WriteLine(d.ToString("C")); // 3,14 грн.

Console.WriteLine(d.ToString("G")); // 3,1415926

Console.WriteLine(d.ToString("R")); // 3,1415926

Console.ReadLine();

} } }