Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 88
- Предыдущая
- 88/642
- Следующая
Console.ReadLine();На заметку! Оператор
using staticAddOperationsFunWithMethodOverloadingВ операторах верхнего уровня вызываются три разных версии метода
Add()Среды Visual Studio и Visual Studio Code оказывают помощь при вызове перегруженных методов. Когда вводится имя перегруженного метода (такого как хорошо знакомый метод
Console.WriteLine()
Если перегруженная версия принимает необязательные параметры, тогда компилятор будет выбирать метод, лучше всего подходящий для вызывающего кода, на основе именованных и/или позиционных аргументов. Добавьте следующий метод:
static int Add(int x, int y, int z = 0){ return x + (y*z);}Если необязательный аргумент в вызывающем коде не передается, то компилятор даст соответствие с первой сигнатурой (без необязательного параметра). Хотя существует набор правил для нахождения методов, обычно имеет смысл избегать создания методов, которые отличаются только необязательными параметрами.
Наконец,
inrefoutstatic int Add(ref int x) { /* */ }static int Add(out int x) { /* */ }Однако если модификатор
inrefoutstatic int Add(ref int x) { /* */ }static int Add(int x) { /* */ }На этом начальное изучение построения методов с использованием синтаксиса C# завершено. Теперь давайте выясним, как строить перечисления и структуры и манипулировать ими.
Понятие типа enum
Вспомните из главы 1, что система типов .NET Core состоит из классов, структур, перечислений, интерфейсов и делегатов. Чтобы начать исследование таких типов, рассмотрим роль перечисления (
епшпFunWithEnumsНа заметку! Не путайте термины перечисление и перечислитель; они обозначают совершенно разные концепции. Перечисление — специальный тип данных, состоящих из пар "имя-значение". Перечислитель — тип класса или структуры, который реализует интерфейс .NET Core по имени
IEnumerableSystem.ArrayIEnumerableforeachПри построении какой-либо системы часто удобно создавать набор символических имен, которые отображаются на известные числовые значения. Например, в случае создания системы начисления заработной платы может возникнуть необходимость в ссылке на типы сотрудников с применением констант вроде
VicePresidentManagerContractorGruntEmpTypeEnumusing System;Console.WriteLine("**** Fun with Enums *****\n");Console.ReadLine();// Здесь должны находиться локальные функции:// Специальное перечисление.enum EmpTypeEnum{ Manager, // = 0 Grunt, // = 1 Contractor, // = 2 VicePresident // = 3}На заметку! По соглашению имена типов перечислений обычно снабжаются суффиксом
EnumВ перечислении
EmpTypeEnum0EmpTypeEnum// Начать нумерацию со значения 102.enum EmpTypeEnum{ Manager = 102, Grunt, // = 103 Contractor, // = 104 VicePresident // = 105}Нумерация в перечислениях не обязана быть последовательной и содержать только уникальные значения. Если (по той или иной причине) перечисление
EmpTypeEnum- Предыдущая
- 88/642
- Следующая
