case.

foreach

C# предоставляет дополнительную инструкцию управления потоком выполнения foreach. foreach делает цикл по всем элементам массива или коллекции, не требуя явной спецификации индексов. Цикл foreach на массиве может выглядеть следующим образом. В этом примере предполагается, что MyArray является массивом double, и необходимо вывести каждое значение в консольном окне. Чтобы сделать это, используем следующий код:

foreach (double SomeElement in MyArray) {

 Console.WriteLine(SomeElement);

}

Отметим что в этом цикле SomeElement является именем, присвоенным переменной для итерации по циклу; здесь можно выбрать любое имя не конфликтующее с другими именами переменных.

Запишем также приведенный выше цикл следующим образом:

foreach (double SomeElement in MyArray)

 Console.WriteLine(SomeElement);

так как блочные инструкции в C# работают таким же образом, как составные инструкции в C++.

Этот цикл будет иметь точно такой же результат, как и следующий:

for (int I=0; I < MyArray.Length; I++) {

 Console.WriteLine(MyArray[i]);

}

(Отметим, что вторая версия иллюстрирует также, как получить число элементов в массиве в C#. Мы рассмотрим, как массив объявляется в C#, позже.)

Отметим, однако, что в отличие от доступа к элементам массива, цикл foreach предоставляет к своим элементам доступ только для чтения. Следовательно, следующий код не будет компилироваться.

foreach (double SomeElement in MyArray)

 SomeElement *= 2; // Неверно, для SomeElement нельзя выполнить

                   // присваивание

Мы упомянули, что цикл foreach может использоваться для массивов или коллекций. Коллекция не имеет аналога в C++, хотя концепция стала общераспространённой в Windows благодаря ее использованию в VB и COM. Коллекция по сути является классом, который реализует интерфейс IEnumerable. Так как это включает поддержку из базовых классов, понятие коллекция объясняется в главе 7.

Переменные

Определения переменных следуют в основном тем же образцам в C#, что и в C++:

int NCustomers, Result;

double DistanceTravelled;

double Height = 3.75;

const decimal Balance = 344.56M;

Хотя, как можно было ожидать, некоторые из типов различны. Как было замечено ранее, переменные могут быть объявлены только локально в методе или как члены класса. C# не имеет эквивалент, глобальных или статических (то есть с областью действия, ограниченной файлом) переменных в C++. Как уже говорилось, переменные, являющиеся членами класса, называются в C# полями.

Отметим, что C# также строго различаем типы данных, хранимые в стеке (типы данных значений) и хранимые в куче (ссылочные типы данных). Мы позже рассмотрим этот вопрос более подробно.

Базовые типы данных

Как и в C++, C# имеет ряд предопределенные типов данных, и можно определять собственные типы данных, такие как классы или структуры.

В C# и C++ предопределенные типы данных несколько различаются. Типы данных для C# приведены в таблице:

Имя Содержит Символ
sbyte 8-битовое целое число со знаком  
byte 8-битовое целое число без знака  
short 16-битовое целое число со знаком  
ushort 16-битовое целое число без знака  
int 32-битовое целое число со знаком  
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату