Точка входа в программу

Метод Main

Точка входа в программу

Каждая программа на C# обязательно содержит класс с методом под именем Main. В примерах выше этот метод определён внутри класса Program.

Однако в новых версиях C# не нужно явно прописывать метод Main: код, написанный напрямую в корне файла, по умолчанию является телом Main.

  • Выполнение программы на C# начинается с первой строки кода внутри метода Main.
  • Первая буква имени метода Main — M, обязательно прописная.

Самая короткая запись метода Main:

static void Main( )
{
    Кодовые инструкции
}Code language: JavaScript (javascript)

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

Для демонстрации создадим проект .NET Framework в Visual Studio 2022, он работает только под Windows.

Выберите шаблон консольного приложения, показанный ниже.

В пункте выбора версии фреймворка выберите актуальную .NET 4.8.1.

Стандартное содержимое файла Program.cs после создания проекта выглядит так:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
Code language: PHP (php)

Строки вверху подключают разные пространства имён, благодаря чему мы можем использовать встроенные классы .NET из этих пространств.

Добавьте одну строку кода внутрь метода Main:

Console.WriteLine(«hello foxdevelop.com»);

Нажмите зелёную треугольную кнопку «Start» в верхней части Visual Studio для запуска программы.

При запуске программа по умолчанию исполнит первую строку внутри Main.

Если скопировать метод Main и добавить второй экземпляр, сразу появится ошибка компиляции.

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

Красные волнистые подчёркивания исчезнут, код выглядит нормально, но попробуем скомпилировать проект.

Нажмите Start

Появится ошибка сборки, её текст отобразится в окне Error List внизу редактора.

Если окно Error List скрыто, откройте его через верхнюю панель меню.

В списке ошибок будет указано точное место с неисправностью.

Пробельные символы (Whitespace)

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

  • Пробел (Space)
  • Табуляция (Tab)
  • Перевод строки (New line)
  • Возврат каретки (Carriage return)

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

// Читаемый отформатированный вариант
Main()
{
    Console.WriteLine("Hi, there!");
}

// Сжатый вариант без отступов
Main(){Console.WriteLine("Hi, there!");}Code language: JavaScript (javascript)

Ниже стандартный правильно отформатированный метод Main:

        static void Main(string[] args)
        {
            Console.WriteLine("hello foxdevelop.com");
        }Code language: JavaScript (javascript)

Если убрать все пробелы и записать код в одну строку, программа всё равно нормально скомпилируется — для компилятора разницы нет.

static void Main(string[] args){Console.WriteLine("hello foxdevelop.com");}Code language: JavaScript (javascript)

Инструкции (Statements)

Синтаксис инструкций C# похож на C и C++. В этом разделе рассмотрим общие правила, отдельные типы инструкций разберём позже.
Инструкция — одна строка исходного кода, которая описывает тип данных или даёт программе команду выполнить действие.
Простые инструкции обязательно заканчиваются точкой с запятой ;. Пример двух последовательных инструкций: первая объявляет целочисленную переменную var1 со значением 5, вторая выводит значение переменной в консоль.

int var1 = 5;
System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);Code language: JavaScript (javascript)

В примере выше внутри Main две инструкции, в предыдущих образцах была только одна. Первая строка создаёт целочисленную переменную var1 с числом 5, вторая выводит текст в консоль. Фрагмент {0} — заполнитель, он заменится значением из var1.

Блоки кода (Blocks)

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

Обернём две инструкции из предыдущего примера фигурными скобками — получится полноценный блок кода:

            {
                int var1 = 5;
                System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);
            }Code language: JavaScript (javascript)

Основные правила блоков кода:

  1. Если синтаксис разрешает только одну инструкцию, но нужно выполнить несколько операций — оберните весь код в блок.
  2. Некоторые языковые конструкции требуют обязательного использования блоков, заменить их одиночной инструкцией нельзя.
  3. Простые инструкции заканчиваются точкой с запятой, но после закрывающей фигурной скобки блока точку с запятой не ставят. Компилятор примет символ ; после }, но интерпретирует как пустую инструкцию, это плохой стиль написания.

Иллюстрация правил:

{
    int var2 = 5; // Каждая отдельная инструкция заканчивается ;
    System.Console.WriteLine("The value of var1 is {0}", var1); // Каждая отдельная инструкция заканчивается ;
} // После закрывающей скобки точка с запятой не нужнаCode language: JavaScript (javascript)

Все обычные отдельные инструкции требуют в конце символ ;

Полный готовый пример, можно скопировать и запустить:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            {
                int var1 = 5;
                System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);
            }; ; ; ;
        }
    }
}
Code language: PHP (php)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *