Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!
Шрифт:
Интервал:
Закладка:
static void ConditionalRefExample()
{
var smallArray = new int[] { 1, 2, 3, 4, 5 };
var largeArray = new int[] { 10, 20, 30, 40, 50 };
int index = 7;
ref int refValue = ref ((index < 5)
? ref smallArray[index]
: ref largeArray[index - 5]);
refValue = 0;
index = 2;
((index < 5)
? ref smallArray[index]
: ref largeArray[index - 5]) = 100;
Console.WriteLine(string.Join(" ", smallArray));
Console.WriteLine(string.Join(" ", largeArray));
}
Если вы не знакомы с ключевым словом ref, то переживать пока не стоит, т.к. оно будет подробно раскрыто в следующей главе. В первом примере возвращается ссылка на местоположение массива с условием, которая присваивается переменной refValue. С концептуальной точки зрения считайте ссылку указателем на позицию в массиве, а не на фактическое значение, которое в ней находится. Это позволяет изменять значение в позиции массива напрямую, изменяя значение, которое присвоено переменной refValue. Результатом установки значения переменной refValue в 0 будет изменение значений второго массива: 10,20,0,40,50. Во втором примере значение во второй позиции первого массива изменяется на 100, давая в результате 1,2,100,4,5.
Использование логических операций
Для выполнения более сложных проверок оператор if может также включать сложные выражения и содержать операторы else. Синтаксис идентичен своим аналогам в языках С (C++) и Java. Для построения сложных выражений язык C# предлагает вполне ожидаемый набор логических операций, которые описан в табл. 3.10.

На заметку! Операции && и || при необходимости поддерживают сокращенный путь выполнения. Другими словами, после того, как было определено, что сложное выражение должно дать в результате false, оставшиеся подвыражения вычисляться не будут. Если требуется, чтобы все выражения вычислялись безотносительно к чему-либо, тогда можно использовать операции & и |.
Использование оператора switch
Еще одной простой конструкцией C# для реализации выбора является оператор switch. Как и в остальных основанных на С языках, оператор switch позволяет организовать выполнение программы на основе заранее определенного набора вариантов. Например, в следующем коде для каждого из двух возможных вариантов выводится специфичное сообщение (блок default обрабатывает недопустимый выбор):
// Switch on a numerical value.
static void SwitchExample()
{
Console.WriteLine("1 [C#], 2 [VB]");
Console.Write("Please pick your language preference: ");
// Выберите предпочитаемый язык:
string langChoice = Console.ReadLine();
int n = int.Parse(langChoice);
switch (n)
{
case 1:
Console.WriteLine("Good choice, C# is a fine language.");
// Хороший выбор. C# - замечательный язык.
break;
case 2:
Console.WriteLine("VB: OOP, multithreading, and more!");
// VB: ООП, многопоточность и многое другое!
break;
default:
Console.WriteLine("Well...good luck with that!");
// Что ж... удачи с этим!
break;
}
}
На заметку! Язык C# требует, чтобы каждый блок case (включая default), который содержит исполняемые операторы, завершался оператором return, break или goto во избежание сквозного прохода по блокам.
Одна из замечательных особенностей оператора switch в C# связана с тем, что вдобавок к числовым значениям он позволяет оценивать данные string. На самом деле все версии C# способны оценивать типы данных char, string, bool, int, long и enum. В следующем разделе вы увидите, что в версии C# 7 появились дополнительные возможности. Вот модифицированная версия оператора switch, которая оценивает переменную типа string:
static void SwitchOnStringExample()
{
Console.WriteLine("C# or VB");
Console.Write("Please pick your language preference: ");
string langChoice = Console.ReadLine();
switch (langChoice.ToUpper())
{
case "C#":
Console.WriteLine("Good choice, C# is a fine language.");
break;
case "VB":
Console.WriteLine("VB: OOP, multithreading and more!");
break;
default:
Console.WriteLine("Well...good luck with that!");
break;
}
}
Оператор switch также может применяться с перечислимым типом данных. Как будет показано в главе 4, ключевое слово enum языка C# позволяет определять специальный набор пар "имя-значение". В качестве иллюстрации рассмотрим вспомогательный метод SwitchOnEnumExample(), который выполняет проверку switch для перечисления System.DayOfWeek. Пример содержит ряд синтаксических конструкций, которые пока еще не рассматривались, но сосредоточьте внимание на самом использовании switch с типом enum; недостающие фрагменты будут прояснены в последующих главах.
static void SwitchOnEnumExample()
{
Console.Write("Enter your favorite day of the week: ");
// Введите любимый день недели:
DayOfWeek favDay;
try
{
favDay = (DayOfWeek) Enum.Parse(typeof(DayOfWeek), Console.ReadLine());
}
catch (Exception)
{
Console.WriteLine("Bad input!");
// Недопустимое входное значение!
return;
}
switch (favDay)
{
case DayOfWeek.Sunday:
Console.WriteLine("Football!!");
// Футбол! !
break;
case DayOfWeek.Monday:
Console.WriteLine("Another day, another dollar");
// Еще один день, еще один доллар.
break;
case DayOfWeek.Tuesday:
Console.WriteLine("At least it is not Monday");
// Во всяком случае, не понедельник.
break;
case DayOfWeek.Wednesday:
Console.WriteLine("A fine day.");
// Хороший денек.
break;
case DayOfWeek.Thursday:
Console.WriteLine("Almost Friday...");
// Почти пятница...
break;
case DayOfWeek.Friday:
Console.WriteLine("Yes, Friday rules!");
// Да, пятница рулит!
break;
case DayOfWeek.Saturday:
Console.WriteLine("Great day indeed.");
// Действительно великолепный день.
break;
}
Console.WriteLine();
}
Сквозной проход от одного оператора case к другому оператору case
Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.
Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.
- 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
- 2. Просьба отказаться от оскорблений, угроз и запугиваний.
- 3. Просьба отказаться от нецензурной лексики.
- 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.
Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.
Оставить комментарий
-
Гость Татьяна24 сентябрь 22:20 Как то не очень... Невеста по ошибке. Я не дам тебе развод - Майя Линн
-
Римма24 сентябрь 21:52 Почему главные героинитпкие идиотки? И сюжет не плохой, и написано хорошо. Но как героиня - так дура дурой.... Хозяйка маленького дома, или Любимая для дракона - Кира Рамис
-
Римма20 сентябрь 12:27 Много ненужных пояснений и отступлений. Весь сюжет теряет свою привлекательность. Героиня иногда так тупит, что читать не... Хозяйка приюта для перевертышей и полукровок - Елена Кутукова