Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
23 of 1492 menu
◀ ▶

Скрытые подключения

Скрытые подключения - это не ключевое слово языка, а настройка проекта SDK: в файле .csproj элемент ImplicitUsings со значением enable. Компилятор тогда автоматически добавляет набор директив using ко всем исходникам. В коде их не видно, но типы из этих пространств доступны как при явном подключении.

Синтаксис

<ImplicitUsings>enable</ImplicitUsings>

Фрагмент задают внутри PropertyGroup файла проекта. Для консольного приложения SDK обычно подставляет System, System.Collections.Generic, System.IO, System.Linq, System.Net.Http, System.Threading и System.Threading.Tasks.

Пример

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

class Program { static void Main() { List<int> nums = new List<int> { 1, 2, 3, 4, 5 }; Console.WriteLine(nums.Count); } }

Результат выполнения кода:

5

Здесь работают List и Console только потому, что проект собран с ImplicitUsings.

Пример

Тот же проект может использовать System.Linq без строки подключения:

class Program { static void Main() { int[] nums = { 1, 2, 3, 4, 5 }; int max = nums.Max(); Console.WriteLine(max); } }

Результат выполнения кода:

5

Пример

Явная директива в файле не запрещена - она дополняет автоматический набор:

using System.Text; class Program { static void Main() { StringBuilder sb = new StringBuilder(); sb.Append("abcde"); Console.WriteLine(sb.ToString()); } }

Результат выполнения кода:

"abcde"

Пример

Чтобы увидеть все директивы, можно отключить скрытые подключения и добавить using вручную:

using System; using System.Collections.Generic; class Program { static void Main() { List<string> items = new List<string> { "a", "b", "c", "d", "e" }; Console.WriteLine(items[0]); } }

Результат выполнения кода:

"a"

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить