Чтение онлайн

на главную - закладки

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

Глава 4

Главные конструкции программирования на С#: часть 2

В настоящей главе завершается обзор основных аспектов языка программирования С#, который был начат в главе 3. Первым делом мы рассмотрим детали манипулирования массивами с использованием синтаксиса C# и продемонстрируем функциональность, содержащуюся внутри связанного класса

System.Array
.

Далее мы выясним различные подробности, касающиеся построения методов, за счет исследования ключевых слов

out
,
ref
и
params
. В ходе дела мы объясним роль необязательных
и именованных параметров. Обсуждение темы методов завершится перегрузкой методов.

Затем будет показано, как создавать типы перечислений и структур, включая детальное исследование отличий между типами значений и ссылочными типами. В конце главы объясняется роль типов данных, допускающих

null
, и связанных с ними операций.

После освоения материала главы вы можете смело переходить к изучению объектно-ориентированных возможностей языка С#, рассмотрение которых начнется в главе 5.

Понятие массивов C#

Как вам уже наверняка известно, массив — это набор элементов данных, для доступа к которым применяется числовой индекс. Выражаясь более конкретно, массив представляет собой набор расположенных рядом элементов данных одного и того же типа (массив элементов

int
, массив элементов
string
, массив элементов
SportsCar
и т.д.). Объявлять, заполнять и получать доступ к массиву в языке C# довольно просто. В целях иллюстрации создайте новый проект консольного приложения по имени
FunWithArrays
, содержащий вспомогательный метод
SimpleArrays
:

Console.WriteLine("***** Fun with Arrays *****");

SimpleArrays;

Console.ReadLine;

static void SimpleArrays

{

Console.WriteLine("=> Simple Array Creation.");

// Создать и заполнить массив из 3 целых чисел.

int[] myInts = new int[3];

// Создать строковый массив из 100 элементов с индексами 0 - 99.

string[] booksOnDotNet = new string[100];

Console.WriteLine;

}

Внимательно взгляните на комментарии в коде. При объявлении массива C# с использованием подобного синтаксиса число, указанное в объявлении, обозначает общее количество элементов, а не верхнюю границу. Кроме того, нижняя граница в массиве всегда начинается с

0
. Таким образом, в результате записи
int[] myInts = new int[3]
получается массив, который содержит три элемента, проиндексированные по позициям
0
,
1
,
2
.

После определения переменной массива можно переходить к заполнению элементов от индекса к индексу, как показано ниже в модифицированном методе

SimpleArrays
:

static void SimpleArrays

{

Console.WriteLine("=> Simple Array Creation.");

//
Создать и заполнить массив из трех целочисленных значений.

int[] myInts = new int[3];

myInts[0] = 100;

myInts[1] = 200;

myInts[2] = 300;

// Вывести все значения.

foreach(int i in myInts)

{

Console.WriteLine(i);

}

Console.WriteLine;

}

На заметку! Имейте в виду, что если массив объявлен, но его элементы явно не заполнены по каждому индексу, то они получат стандартное значение для соответствующего типа данных (например, элементы массива

bool
будут установлены в
false
, а элементы массива
int
— в
0
).

Синтаксис инициализации массивов C#

В дополнение к заполнению массива элемент за элементом есть также возможность заполнять его с применением синтаксиса инициализации массивов. Для этого понадобится указать значения всех элементов массива в фигурных скобках (

{}
). Такой синтаксис удобен при создании массива известного размера, когда нужно быстро задать его начальные значения. Например, вот как выглядят альтернативные версии объявления массива:

static void ArrayInitialization

{

Console.WriteLine("=> Array Initialization.");

// Синтаксис инициализации массивов с использованием ключевого слова new.

string[] stringArray = new string[]

{ "one", "two", "three" };

Console.WriteLine("stringArray has {0} elements", stringArray.Length);

// Синтаксис инициализации массивов без использования ключевого слова new.

bool[] boolArray = { false, false, true };

Console.WriteLine("boolArray has {0} elements", boolArray.Length);

// Инициализация массива с применением ключевого слова new и указанием размера.

int[] intArray = new int[4] { 20, 22, 23, 0 };

Console.WriteLine("intArray has {0} elements", intArray.Length);

Console.WriteLine;

}

Обратите внимание, что в случае использования синтаксиса с фигурными скобками нет необходимости указывать размер массива (как видно на примере создания переменной

stringArray
), поскольку размер автоматически вычисляется на основе количества элементов внутри фигурных скобок. Кроме того, применять ключевое слово
new
не обязательно (как при создании массива
boolArray
).

Поделиться:
Популярные книги

Лорд Системы 12

Токсик Саша
12. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 12

Младший научный сотрудник 2

Тамбовский Сергей
2. МНС
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Младший научный сотрудник 2

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Цеховик. Книга 2. Движение к цели

Ромов Дмитрий
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели

Неестественный отбор.Трилогия

Грант Эдгар
Неестественный отбор
Детективы:
триллеры
6.40
рейтинг книги
Неестественный отбор.Трилогия

Попаданка в семье драконов

Свадьбина Любовь
Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.37
рейтинг книги
Попаданка в семье драконов

Звезда сомнительного счастья

Шах Ольга
Фантастика:
фэнтези
6.00
рейтинг книги
Звезда сомнительного счастья

Беглец

Кораблев Родион
15. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Беглец

Я – Орк

Лисицин Евгений
1. Я — Орк
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я – Орк

Смерть может танцевать 2

Вальтер Макс
2. Безликий
Фантастика:
героическая фантастика
альтернативная история
6.14
рейтинг книги
Смерть может танцевать 2

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18

Жандарм

Семин Никита
1. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
4.11
рейтинг книги
Жандарм

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

Гром над Империей. Часть 1

Машуков Тимур
5. Гром над миром
Фантастика:
фэнтези
5.20
рейтинг книги
Гром над Империей. Часть 1