В языке программирования C# операторы верхнего уровня — это относительно новая концепция, позволяющая разработчикам писать исполняемый код напрямую, без определения классов или методов. Эта функция была представлена в C# 9.0, что сделало язык C# более гибким и простым. В этой статье я углублюсь в концепцию операторов верхнего уровня, сценарии использования и то, как они влияют на программирование на C#.
До C# 9.0 весь код C# должен был содержаться в классе или методе. Это означает, что даже очень простая программа должна определить хотя бы один класс и один метод Main. Например, простая программа «Hello, World!» будет выглядеть следующим образом:
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
С помощью Введения заявлений высших уровней приведенный выше код можно упростить до:
using System;
Console.WriteLine("Hello, World!");
Такое упрощение делает код чище и облегчает написание быстрых тестов и небольших скриптов.
Синтаксис операторов верхнего уровняочень прямой,Их можно записать непосредственно в пространстве имен.,Нет необходимости определять классы или методы. Например:
using System;
int number = 10;
Console.WriteLine(number);
В этом примере,Мы определяем целочисленную переменнуюnumber
и напечатал его значение。Эти заявления являются высшим уровнем,Потому что они принадлежат непосредственно пространству имен,а не какой-либо класс или метод.
Он очень универсален, вот некоторые распространенные применения:
Хотя операторы верхнего уровня предоставляют новый способ программирования, они не заменяют классы и методы. Во многих случаях использование классов и методов по-прежнему является лучшим выбором. Вот некоторые соображения:
Хотя операторы верхнего уровня обеспечивают удобство, они также имеют определенные ограничения. Вот несколько моментов, на которые следует обратить внимание:
В C# 9.0 также представлена поддержка асинхронных потоков (IAsyncEnumerable), которая в сочетании с инструкциями верхнего уровня предоставляет новые возможности для асинхронного программирования. Например:
using System;
using System.Threading.Tasks;
await foreach (var item in GenerateItemsAsync())
{
Console.WriteLine(item);
}
async IAsyncEnumerable<int> GenerateItemsAsync()
{
for (int i = 0; i < 10; i++)
{
await Task.Delay(100);
yield return i;
}
}
В этом примере,мы используемawait foreach
Цикл для асинхронной обработки асинхронного потока。этот режимсуществовать Очень полезно при работе с большими объемами данных или длительными задачами.。
Поведением операторов верхнего уровня можно управлять с помощью конфигурации в файлах проекта (например, .csproj). Например,Может быть установлен с помощьюImplicitUsings
чтобы включить или отключить операторы верхнего уровня:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
Таким образом, разработчики могут гибко контролировать использование операторов верхнего уровня.