
- •Переменные
- •Использование точки с запятой и оформление текста программы
- •Ключевые слова с#
- •Идентификаторы
- •Библиотеки классов с#
- •Типы значений в с#
- •Вывод данных
- •Литералы
- •Управляющие последовательности символов
- •Строковые литералы
- •Инициализация переменной
- •Динамическая инициализация
- •Преобразование и приведение типов
- •Автоматическое преобразование типов
- •Приведение несовместимых типов
- •Приведение типов в выражениях
- •Оператор присваивания
- •Инструкция if
- •If (условие) инструкция1;
- •If (условие) {последовательность инструкций}
- •Использование блоков кода
- •Конструкция if - else - if
- •If (условие) инструкция;
- •Инструкция switch
- •Цикл for
- •Цикл while
- •Цикл do - while
- •Инструкция goto
- •Арифметические оператор Арифметические операторы
- •Инкремент и декремент
- •Операторы отношений и логические операторы
- •Оператор присваивания
- •Составные операторы присваивания
- •Поразрядные операторы
- •Операторы сдвига
- •Оператор ?
- •Одномерные массивы
- •Инициализация массива
- •Массивы трех и более измерений
- •Инициализация многомерных массивов
- •Использование свойства Length
- •Создание строк
- •Работа со строками
- •Наиболее часто используемые методы обработки строк
Поразрядные операторы
В С# предусмотрен набор поразрядных операторов, которые расширяют области приложения языка С#. Поразрядные операторы действуют непосредственно на разряды своих операндов. Они определены только для целочисленных операндов и не могут быть использованы для операндов типа bool, float или double. Работают на побитовой основе.
Оператор |
Значение |
& |
Поразрядное И |
| |
Поразрядное ИЛИ |
^ |
Поразрядное исключающее ИЛИ |
>> |
Сдвиг вправо |
<< |
Сдвиг влево |
~ |
Дополнение до 1 (унарный оператор НЕ) |
Операторы сдвига
В С# можно сдвигать значение влево или вправо на заданное число разрядов. Для это в С# определены следующие операторы поразрядного сдвига:
<< − сдвиг влево;
>> − сдвиг вправо.
Общий формат записи этих операторов такой:
значение << число битов;
значение >> число_битов.
Здесь значение — это объект операции сдвига, а элемент число_битов указывает, на сколько разрядов должно быть сдвинуто значение.
При сдвиге влево на один разряд все биты, составляющее значение, сдвигаются влево на одну позицию, а в младший разряд записывается нуль. При сдвиге вправо все биты сдвигаются, соответственно, вправо. Если сдвигу вправо подвергается значение без знака, в старший разряд записывается нуль. Если же сдвигу вправо подвергается значение со знаком, значение знакового разряда сохраняется. Если сдвигаемое значение отрицательно, при каждом сдвиге вправо в старший разряд записывается единица, а если положительно — нуль. При сдвиге как вправо, так и влево крайние биты теряются.
Оператор ?
Оператор ? используется для замены определенных типов конструкций if then-else и называется тернарным, поскольку он работает с тремя операторами. Его общий формат записи имеет такой вид:
Выражение 1 ? Выражение2 : Выражение3;
Здесь Выражение1 должно иметь тип bool. Типы элементов Выражение2 и Выражение 3 должны быть одинаковы. Значение ?-выражения определяется следующим образом. Вычисляется Выражение 1. Если оно оказывается истинным, вычисляется Выражение2, и результат его вычисления становится значением всего ?-выражения. Если результат вычисления элемента Выражение1 оказывается ложным, значением всего ?-выражения становится результат вычисления элемента ВыражениеЗ.
Пример, в котором переменной absval присваивается абсолютное значение переменной val.
absval = val < 0 ? -val : val ; // Получаем абсолютное значение val .
Одномерные массивы
Массив (array) — это коллекция переменных одинакового типа, обращение к которым происходит с использованием общего для всех имени. В С# массивы могут быть одномерными или многомерными, хотя в основном используются одномерные массивы.
Одномерный массив — это список связанных переменных.
Для объявления одномерного массива используется следующая форма записи.
тип[] имя__массива = new тип [размер] ;
Здесь с помощью элемента записи тип объявляется базовый тип массива. Базовый тип определяет тип данных каждого элемента, составляющего массив. Обратите внимание на одну пару квадратных скобок за элементом записи ТИП. ЭТО означает, что определяется одномерный массив. Количество элементов, которые будут храниться в массиве, определяется элементом записи размер.
Рассмотрим пример. При выполнении приведенной ниже инструкции создается int-массив (состоящий из 10 элементов), который связывается со ссылочной переменной массива sample.
int [ ] sample = new int [10]; // sample содержит ссылку на область памяти, выделенную оператором new.
Доступ к отдельному элементу массива осуществляется посредством индекса. Индекс описывает позицию элемента внутри массива. В С# первый элемент массива имеет нулевой индекс. Поскольку массив sample содержит 10 элементов, его индексы изменяются от 0 до 9. Чтобы получить доступ к элементу массива по индексу, достаточно указать нужный номер элемента в квадратных скобках. Так, первым элементом
массива sample является sample [0], а последним — sample [9].
// Демонстрация использования одномерного массива.
using System;
class ArrayDemo {
public static void Main() {
int[ ] sample = new int[10];
int i ;
for(i = 0 ; i < 10; i = i+1)
sample[i] = i;
for(i = 0 ; i < 10; i = i+1)
Console.WriteLine("sample[" + i + " ] : " + sample[i]);
}
}
Результаты выполнения этой программы имеют такой вид:
sample[0] : 0
sample[1] : 1
sample[2] : 2
sample[3] : 3
sample[4] : 4
sample[5] : 5
sample[6] : б
sample[7] : 7
sample[8] : 8
sample[9] : 9