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


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

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

using System;

Console.WriteLine("Hello world!");

namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }

    namespace YourNestedNamespace
    {
        struct YourStruct
        {
        }
    }
}

В предыдущем примере используются операторы верхнего уровня для точки входа программы. Только один файл может иметь операторы верхнего уровня. Точка входа программы — это первая текстовая строка текста программы в этом файле. В этом случае это Console.WriteLine("Hello world!");. Вы также можете создать статический метод с именем Main в качестве точки входа программы, как показано в следующем примере:

// A skeleton of a C# program
using System;
namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }

    namespace YourNestedNamespace
    {
        struct YourStruct
        {
        }
    }

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

В этом случае программа запускается в открывающей скобке Main метода, который является Console.WriteLine("Hello world!");

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

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

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

#!/usr/local/share/dotnet/dotnet run
Console.WriteLine("Hello, World!");

Первая строка программы содержит #! последовательность для оболочк Unix. Расположение интерфейса командной dotnet строки может отличаться от разных дистрибутивов. В любой системе Unix, если задано разрешение на выполнение (+x) для файла C#, можно запустить файл C# из командной строки:

./hello-world.cs

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

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

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

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

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

Инструкция — это полная инструкция, которая выполняет действие. Операторы не возвращают значения; вместо этого они управляют потоком программы, объявляют переменные или выполняют операции. Примеры заявлений:

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

Ключевое различие: выражения вычисляются в значения, а инструкции выполняют действия. Некоторые конструкции, такие как вызовы методов, могут выполнять обе функции. Например, Math.Max(a, b) это выражение, используемое в int result = Math.Max(a, b);, но становится оператором выражения, если используется по отдельности как Math.Max(a, b);.

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

Вы узнаете об этих элементах программы в разделе типов руководства по основам.

Спецификация языка C#

Дополнительные сведения см. в разделе Основные понятия в спецификации языка C#. Спецификация языка является окончательным источником для синтаксиса И использования C#.