Поделиться через


Общая структура программы C#

Подсказка

Вы новичок в разработке программного обеспечения? Сначала начните с учебников для начинающих. Вам помогут шаг за шагом написать вашу первую программу на C#, перед тем, как изучить структуру программы.

Есть опыт на другом языке? Вам может потребоваться пропустить раздел "Начало работы " для синтаксиса C#, а затем вернуться сюда.

Вы создаете программы C# из этих основных стандартных блоков: пространства имен упорядочивают типы, типы (классы, структуры, интерфейсы, перечисления и делегаты) определяют поведение и данные, а также операторы и выражения выполняют работу во время выполнения. Структура точки входа зависит от выбранного стиля приложения.

Выбор стиля приложения

При создании программы C# сделайте два независимых выбора о том, как его структурировать:

  • На основе файлов или на основе проектов?
    • Приложение на основе файлов запускается из одного .cs файла без файла проекта.
    • Приложение на основе проекта использует .csproj файл и может охватывать несколько исходных файлов.
  • Операторы верхнего уровня или Main метод?
    • Инструкции верхнего уровня позволяют писать исполняемый код непосредственно в верхней части файла.
    • Метод Main упаковывает точку входа в явный статический метод.

Оба приложения — основанные на проектах и на файлах — поддерживают любой стиль точки входа.

Приложения на основе файлов и приложения на основе проектов

Начиная с C# 14 и .NET 10, приложения на основе файлов позволяют запускать программу, содержащуюся в одном *.cs файле без файла проекта. Сохраните следующий код в файле с именем hello-world.cs и выполните его с помощью dotnet run hello-world.cs или dotnet hello-world.cs.

#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");

Замечание

Строка #! позволяет оболочкам Unix запускать файл напрямую. В любой системе Unix задайте разрешение на выполнение (+x) и запустите файл из командной строки.

Приложения на основе файлов поддерживают весь синтаксис C# и могут использовать директивы препроцессора для настройки системы сборки. Используйте приложения на основе файлов для небольших служебных программ командной строки, прототипов и экспериментов. Приложение на основе файлов состоит из одного файла в каталоге:

my-app/
└── hello-world.cs

Приложения на основе проектов используют .csproj и команды .NET CLI, dotnet newdotnet build и dotnet run рабочий процесс. Выберите приложения на основе проекта, когда программа охватывает несколько файлов или требует точной настройки сборки. Приложение на основе проекта включает файл проекта вместе с одним или несколькими исходными файлами:

my-app/
├── my-app.csproj
├── Program.cs
├── Models/
│   └── Person.cs
└── Services/
    └── GreetingService.cs

Если приложение на основе файлов растет, его можно легко преобразовать в приложение на основе проекта. Запустите dotnet project convert , чтобы создать файл проекта из существующего исходного файла.

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

Операторы верхнего уровня и Main метод

С помощью инструкций верхнего уровня можно писать исполняемый код непосредственно в одном файле, не упаковывая его в класс и Main метод. Этот стиль используется по умолчанию при создании нового консольного приложения.dotnet new console В следующем примере показана современная программа C#, использующая инструкции верхнего уровня:

Console.WriteLine("Hello, World!");

namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }
}

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

Можно также определить явный статический Main метод в качестве точки входа программы:

// A skeleton of a C# program using an explicit Main method
namespace YourNamespace;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

Оба стиля точки входа работают с приложениями, основанными на файлах и проектах. Оба стиля поддерживают одни и те же функции.

Создание и запуск программ C#

C# — это скомпилированный язык. Для приложений на основе проекта используйте dotnet build команду для компиляции исходных файлов в двоичный пакет. Используйте dotnet run, чтобы выполнить сборку и запуск в один шаг. Интерфейс dotnet командной строки, включенный в пакет SDK для .NET, предоставляет множество средств для создания, сборки и управления проектами C#.

Для приложений dotnet run hello-world.cs на основе файлов компилирует и запускает один файл напрямую — файл проекта не требуется.

Выражения и инструкции

Если вы выполнили учебные пособия 'Начало работы', вы уже написали выражения и операторы. Каждая строка кода, введенная вами, была одной или другой (или то и другое). Теперь определим эти термины.

Выражения и операторы являются основными стандартными блоками программы C#. Выражение создает значение. Оператор выполняет действие и обычно заканчивается точкой запятой.

Ниже приведены выражения:

  • 42 (литеральное значение)
  • x + y (арифметическая операция)
  • Math.Max(a, b) (вызов метода, который создает значение)
  • condition ? trueValue : falseValue (условное выражение)
  • new Person("John") (создание объекта)

Инструкция выполняет действие. Операторы управляют потоком программы, объявляют переменные или вызывают операции. Ниже приведены утверждения:

  • int x; (инструкция объявления)
  • int x = 42; (оператор объявления с инициализацией)
  • Console.WriteLine("Hello"); (оператор вызова метода)
  • if (condition) { /* code */ } (условный оператор)
  • return result; (оператор return)

Инструкции часто содержат выражения, а выражения могут вложиться в другие выражения. Например, следующий оператор объявления присваивает f результату выражения сложения. Это выражение добавления добавляет результаты двух выражений вызова метода:

var maxResult = Math.Max(a, b) + Math.Max(c, d);

Подробные сведения об инструкциях см. в разделе "Инструкции". Сведения о элементах с выражением см. в разделе "Элементы с выражением".