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

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

Жанры

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

using System;

// Отобразить пользователю простое сообщение.

Console.WriteLine(***** Му First C# Арр *****);

Console.WriteLine("Hello World!");

Console.WriteLine;

// Ожидать нажатия клавиши <Enter>, прежде чем завершить работу.

Console.ReadLine;

Запустив программу, вы увидите, что получается тот же самый результат!

Существует несколько правил применения операторов верхнего уровня.

• Операторы верхнего уровня можно использовать только в одном файле внутри приложения.

• В случае применения операторов верхнего уровня программа не может иметь объявленную точку входа.

• Операторы верхнего уровня нельзя помещать в пространство имен.

• Операторы верхнего уровня по-прежнему имеют доступ к строковому массиву аргументов.

• Операторы верхнего уровня возвращают код завершения приложения (как объясняется в следующем разделе) с использованием

return
.

• Функции, которые объявлялись в классе

Program
, становятся локальными функциями для операторов верхнего уровня. (Локальные функции раскрываются в главе 4.)

• Дополнительные типы можно объявлять после всех операторов верхнего уровня. Объявление любых типов до окончания операторов верхнего уровня приводит к ошибке на этапе компиляции.

"За кулисами" компилятор заполняет пробелы. Исследуя сгенерированный код IL для обновленного кода, вы заметите такое определение

TypeDef
для точки входа в приложение:

// TypeDef #1 (02000002)

// -------------------------------------------------------

// TypDefName: <Program>$ (02000002)

// Flags : [NotPublic] [AutoLayout] [Class] [Abstract] [Sealed] [AnsiClass]

[BeforeFieldInit] (00100180)

// Extends : 0100000D [TypeRef] System.Object

// Method #1 (06000001) [ENTRYPOINT]

// -------------------------------------------------------

// MethodName: <Main>$ (06000001)

Сравните его с определением

TypeDef
для точки входа в главе 1:

// -------------------------------------------------------

// TypDefName: CalculatorExamples.Program (02000002)

// Flags : [NotPublic] [AutoLayout] [Class] [AnsiClass]

[BeforeFieldInit] (00100000)

// Extends : 0100000C [TypeRef] System.Object

// Method #1 (06000001) [ENTRYPOINT]

// -------------------------------------------------------

// MethodName: Main (06000001)

В примере из главы 1 обратите внимание, что значение

TypDefName
представлено как пространство имен (
CalculatorExamples
)
плюс имя класса (
Program
), а значением
MethodName
является
Main
. В обновленном примере, использующем операторы верхнего уровня, компилятор заполняется значение
<Program>$
для
TypDefName
и значение
<Main>$
для имени метода.

Указание кода ошибки приложения (обновление в версии 9.0)

Хотя в подавляющем большинстве случаев методы

Main
или операторы верхнего уровня будут иметь
void
в качестве возвращаемого значения, возможность возвращения
int
(или
Task<int>
) сохраняет согласованность C# с другими языками, основанными на С. По соглашению возврат значения
0
указывает на то, что программа завершилась успешно, тогда как любое другое значение (вроде
– 1
) представляет условие ошибки (имейте в виду, что значение
0
автоматически возвращается даже в случае, если метод
Main
прототипирован как возвращающий
void
).

При использовании операторов верхнего уровня (следовательно, в отсутствие метода

Main
) в случае, если исполняемый код возвращает целое число, то оно и будет кодом возврата. Если же явно ничего не возвращается, тогда все равно обеспечивается возвращение значения
0
, как при явном применении метода
Main
.

В ОС Windows возвращаемое приложением значение сохраняется в переменной среды по имени

%ERRORLEVEL%
. Если создается приложение, которое программно запускает другой исполняемый файл (тема, рассматриваемая в главе 19), тогда получить значение
%ERRORLEVEL%
можно с применением свойства
ExitCode
запущенного процесса.

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

// Обратите внимание, что теперь возвращается int, а не void.

// Вывести сообщение и ожидать нажатия клавиши <Enter>.

Console.WriteLine("***** My First C# App *****");

Console.WriteLine("Hello World!");

Console.WriteLine;

Console.ReadLine;

// Возвратить произвольный код ошибки.

return -1;

Если программа в качестве точки входа по-прежнему использует метод

Main
, то вот как изменить сигнатуру метода, чтобы возвращать
int
вместо
void
:

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

Генерал Империи

Ланцов Михаил Алексеевич
4. Безумный Макс
Фантастика:
альтернативная история
5.62
рейтинг книги
Генерал Империи

Приручитель женщин-монстров. Том 1

Дорничев Дмитрий
1. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 1

Виконт. Книга 1. Второе рождение

Юллем Евгений
1. Псевдоним `Испанец`
Фантастика:
фэнтези
боевая фантастика
попаданцы
6.67
рейтинг книги
Виконт. Книга 1. Второе рождение

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

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

Магия чистых душ 3

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Магия чистых душ 3

Шипучка для Сухого

Зайцева Мария
Любовные романы:
современные любовные романы
8.29
рейтинг книги
Шипучка для Сухого

Метатель. Книга 2

Тарасов Ник
2. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель. Книга 2

Отмороженный 5.0

Гарцевич Евгений Александрович
5. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 5.0

Кодекс Охотника. Книга XIII

Винокуров Юрий
13. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XIII

Деспот

Шагаева Наталья
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Деспот

Огненный князь 6

Машуков Тимур
6. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 6

Ваше Сиятельство 5

Моури Эрли
5. Ваше Сиятельство
Фантастика:
городское фэнтези
аниме
5.00
рейтинг книги
Ваше Сиятельство 5

"Фантастика 2024-5". Компиляция. Книги 1-25

Лоскутов Александр Александрович
Фантастика 2024. Компиляция
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Фантастика 2024-5. Компиляция. Книги 1-25

Поступь Империи

Ланцов Михаил Алексеевич
7. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Поступь Империи