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

ЖАНРЫ

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

(string, int)

В показанном ниже примере два значения, передаваемые методу

RockPapeScissors
, преобразуются в кортеж, после чего выражение
switch
вычисляет два значения в единственном выражении. Такой прием позволяет сравнивать в операторе
switch
более одного выражения:

//Switch expression with Tuples

static string RockPaperScissors(string first, string second)

{

return (first, second) switch

{

("rock", "paper") => "Paper wins.",

("rock", "scissors") => "Rock wins.",

("paper", "rock") => "Paper wins.",

("paper", "scissors") => "Scissors wins.",

("scissors", "rock") => "Rock wins.",

("scissors", "paper") => "Scissors wins.",

(_, _) => "Tie.",

};

}

Чтобы

вызвать метод
RockPaperScissors
, добавьте в метод
Main
следующие строки кода:

Console.WriteLine(RockPaperScissors("paper","rock"));

Console.WriteLine(RockPaperScissors("scissors","rock"));

Мы еще вернемся к этому примеру в главе 4, где будут представлены кортежи.

Резюме

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

Main
, либо явно, либо с использованием операторов верхнего уровня. Данный метод служит точкой входа в программу.

Затем были подробно описаны встроенные типы данных C# и разъяснено, что применяемые для их представления ключевые слова (например,

int
) на самом деле являются сокращенными обозначениями полноценных типов из пространства имен
System
(
System.Int32
в данном случае). С учетом этого каждый тип данных C# имеет набор встроенных членов. Кроме того, обсуждалась роль расширения и сужения, а также ключевых слов
checked
и
unchecked
.

В завершение главы рассматривалась роль неявной типизации с использованием ключевого слова

var
. Как было отмечено, неявная типизация наиболее полезна при работе с моделью программирования LINQ. Наконец, мы бегло взглянули на различные конструкции С#, предназначенные для организации циклов и принятия решений.

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

Глава 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;

Поделиться с друзьями: