Узнайте, как использовать редактор кода
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
В этом 10-минутном введении, посвященном редактору кода в Visual Studio, мы добавим код в файл, чтобы рассмотреть некоторые способы, упрощающие написание, понимание кода и навигацию по нему в Visual Studio.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.
Эта статья предполагает, что вы уже знакомы с языком программирования. В противном случае рекомендуется сначала посмотреть одно из кратких руководств по языкам программирования Python или C# либо по созданию консольного приложения с помощью Visual Basic или C++.
Чтобы выполнять действия, описанные в этой статье, выберите нужные параметры C# для Visual Studio. Сведения о настройке параметров для интегрированной среды разработки (IDE) вы найдете в этой статье.
Создание файла кода
Для начала создайте файл и добавьте в него код.

- Откройте Visual Studio. Нажмите клавишу ESC или нажмите Продолжить без кода в окне запуска, чтобы открыть среду разработки.
- В меню Файл в строке меню выберите пункты Создать>Файл.
- В диалоговом окне Новый файл в разделе Общие выберите Класс Visual C# и нажмите кнопку Открыть. Новый файл открывается в редакторе с каркасом класса C#. (Обратите внимание, что нам не нужно создавать полный проект Visual Studio, чтобы получить некоторые преимущества редактора кода. Вам нужен только файл кода!)

- Откройте Visual Studio. Нажмите клавишу ESC или щелкните команду Продолжить без кода в окне запуска, чтобы открыть среду разработки.
- В меню Файл в строке меню выберите элементы Создать>Файл или нажмите клавиши CTRL+N.
- В диалоговом окне «Создать файл» в категории «Общие» выберите класс C#, а затем нажмите кнопку «Открыть«. Новый файл открывается в редакторе с каркасом класса C#.
Использование фрагментов кода
Visual Studio предоставляет удобные фрагменты кода, позволяющие быстро и легко создавать часто используемые блоки кода. Фрагменты кода доступны для различных языков программирования, включая C#, Visual Basic и C++.
Давайте добавим фрагмент void Main C# в файл.

- Поместите курсор над последней закрывающей фигурной скобкой > в файле и введите символы svm . ( svm расшифровывается как static void Main . Метод Main() является точкой входа для приложений C#.) Появится всплывающее диалоговое окно с информацией о фрагменте кода svm .
- Два раза нажмите клавишу TAB, чтобы вставить фрагмент кода. Вы увидите, как в файл добавляется сигнатура метода static void Main() .
Для разных языков программирования доступны различные фрагменты кода. Вы можете просмотреть фрагменты кода, доступные для используемого языка, выбрав Изменить>IntelliSense>Вставить фрагмент и указав папку вашего языка. Для C# список выглядит следующим образом.


- Поместите курсор над последней закрывающей фигурной скобкой > в файле и введите символы svm . Появится всплывающее диалоговое окно с информацией о фрагменте кода svm .
- Два раза нажмите клавишу TAB, чтобы вставить фрагмент кода. Вы увидите, как в файл добавляется сигнатура метода static void Main() . Метод Main() является точкой входа для приложений C#.
Для разных языков программирования доступны соответствующие фрагменты кода. Вы можете просмотреть фрагменты кода, доступные для используемого языка. Для этого выберите элементы Изменить>IntelliSense>Вставить фрагмент или нажмите клавиши CTRL+K и CTRL+X, а затем укажите папку для своего языка программирования. Для C# список фрагментов кода выглядит следующим образом.

Список включает фрагменты кода для создания класса, конструктора, цикла for, операторов if и switch и многое другое.
Закомментирование кода
Панель инструментов, которая находится в строке кнопок под строкой меню в Visual Studio, поможет повысить продуктивность написания кода. Например, можно переключить режим завершения IntelliSense (IntelliSense — это помощник в написании кода, который отображает список подходящих методов и многое другое), увеличить или уменьшить отступ строки или закомментировать код, который вы не хотите компилировать. В этом разделе мы закомментируем код.

-
Вставьте следующий код в тело метода Main() .
// _words is a string array that we'll sort alphabetically string[] _words = < "the", "quick", "brown", "fox", "jumps" >; string[] morewords = < "over", "the", "lazy", "dog" >; IEnumerable query = from word in _words orderby word.Length select word;

Панель инструментов текстового редактора, которая представляет строку с кнопками под строкой меню в Visual Studio, делает написание кода более продуктивным. Например, вы можете переключить режим завершения IntelliSense, увеличить либо уменьшить отступ для строк или закомментировать фрагмент кода, который не нужно компилировать.

Давайте закомментируем некоторую часть кода.
-
Вставьте следующий код в тело метода Main() .
// someWords is a string array. string[] someWords = < "the", "quick", "brown", "fox", "jumps" >; string[] moreWords = < "over", "the", "lazy", "dog" >; // Alphabetically sort the words. IEnumerable query = from word in someWords orderby word select word;
Символы комментария C# // добавляются в начало каждой выбранной строки, чтобы закомментировать код. Если нужно раскомментировать строки, выберите их, а затем нажмите кнопку Раскомментировать выбранные строки на панели инструментов текстового редактора. Если вы предпочитаете использовать клавиатуру, нажмите клавиши CTRL+K, CTRL+U. 
Свертывание блоков кода
Нам не нужно отображать пустой конструктор, созданный для Class1 . Поэтому, чтобы не перенасыщать представление кода деталями, мы свернем его. Выберите небольшое серое поле со знаком «минус» внутри в поле первой строки конструктора. Или, если вы предпочитаете использовать клавиатуру, поместите курсор в любое место кода конструктора и нажмите клавиши CTRL+M, CTRL+M.

Блок кода сворачивается до первой строки, после которой идет многоточие ( . ). Чтобы развернуть блок кода, щелкните то же серое поле, в котором теперь находится знак «плюс», или нажмите клавиши CTRL+M, CTRL+M еще раз. Эта функция называется структурированием и особенно полезна при свертывании длинных методов или целых классов.
Нам не нужно отображать пустой конструктор, созданный для Class1 . Поэтому, чтобы не перенасыщать представление кода деталями, мы свернем его. Выберите небольшое серое поле со знаком «минус» внутри в поле первой строки конструктора. Или, если вы предпочитаете использовать клавиатуру, поместите курсор в любое место кода конструктора и нажмите клавиши CTRL+M, CTRL+M.

Блок кода сворачивается до первой строки, после которой идет многоточие ( . ). Чтобы развернуть блок кода, щелкните то же серое поле, в котором теперь находится знак «+», или нажмите клавиши CTRL+M, CTRL+M еще раз. Эта функция называется структурированием и особенно полезна при свертывании длинных методов или целых классов.
Просмотр определений символов
Редактор Visual Studio упрощает проверку определения типа, метода и т. д. Один из способов — перейти к файлу, который содержит определение, например, выбрав «Перейти к определению » в любом месте, на который ссылается символ. Сделать это еще быстрее и даже без перемещения фокуса с рабочего файла можно с помощью команды Показать определение. Давайте посмотрим определение типа string .

- Щелкните правой кнопкой мыши любой из экземпляров string и выберите пункт Показать определение в контекстном меню. Или нажмите Alt+F12. Отображается всплывающее окно с определением класса String . Вы можете прокрутить его или даже показать определение другого типа из просматриваемого кода.
- Закройте окно просматриваемого определения, щелкнув небольшое поле со знаком «x» в его правом верхнем углу.
В редакторе Visual Studio можно легко проверить определение типа, метода или переменной. Один из способов — перейти к файлу, который содержит определение. Для этого выберите команду Перейти к определению или нажмите клавишу F12 в любом месте, где указана ссылка на этот символ. Сделать это еще быстрее и даже без перемещения фокуса с кода можно, щелкнув команду Показать определение.
Давайте посмотрим определение типа string .

- Щелкните правой кнопкой мыши любой из экземпляров string и выберите пункт Показать определение в контекстном меню. Или нажмите клавиши ALT+F12. Отображается всплывающее окно с определением класса String . Вы можете прокрутить его или даже показать определение другого типа из просматриваемого кода.
- Закройте окно просматриваемого определения, щелкнув небольшое поле со знаком Х справа в верхнем углу.
Использование IntelliSense для завершения слов
Технология IntelliSense крайне полезна при написании кода. Она может отображать сведения о доступных членах типа или сведения о параметрах для различных перегрузок метода. Вы также можете использовать IntelliSense для завершения слова после того, как ввели достаточно знаков для однозначного его определения. Давайте добавим строку кода для вывода упорядоченных строк в окне консоли — это стандартное место для отображения выходных данных программы.
-
Начните набирать следующий код под переменной query .
foreach (string str in qu

Вы видите, как IntelliSense показывает Краткие сведения о символе query .
foreach (string str in query)
Технология IntelliSense крайне полезна при написании кода. Она может отображать сведения о доступных членах типа или сведения о параметрах для различных перегрузок метода. Вы также можете использовать IntelliSense для завершения слова после того, как ввели достаточно знаков для однозначного его определения.
Давайте добавим строку кода для вывода упорядоченных строк в окне консоли — это стандартное место для отображения выходных данных программы.
-
Начните набирать следующий код под переменной query .
foreach (string str in qu

Вы увидите всплывающее окно IntelliSense с информацией о символе query .
foreach (string str in query)
Рефакторинг имени
Никто не пишет код правильно с первого раза, и, среди прочего, вам может потребоваться изменить имя переменной или метода. Давайте попробуем использовать функциональность рефакторинга Visual Studio, чтобы переименовать переменную _words в words .

- Поместите курсор на определение переменной _words и выберите пункт Переименовать в контекстном меню или нажмите клавиши CTRL+R, CTRL+R. В верхней правой части редактора отображается всплывающее диалоговое окно Переименование.
- Введите нужное имя words. Обратите внимание, что ссылка на words в запросе также переименовывается автоматически. Перед нажатием клавиши ВВОД установите флажок Включить комментарии во всплывающем окне Переименование.
- Нажмите ВВОД. Переименованы были оба экземпляра words , а также ссылка на words в комментарии кода.
Никто не пишет код правильно с первого раза, и, среди прочего, вам может потребоваться изменить имя переменной или метода. Давайте попробуем использовать функциональность рефакторинга Visual Studio, чтобы переименовать переменную someWords в unsortedWords .
- Поместите курсор на определение переменной someWords и выберите команду Переименовать в контекстном меню или нажмите клавишу F2. Справа в верхней части окна редактора отобразится диалоговое окно Переименование.

- Введите имя unsortedWords. Вы увидите, что ссылка на unsortedWords в операторе назначения query также переименовывается автоматически. Перед нажатием клавиши ВВОД выберите поле «Включить примечания» проверка box во всплывающем окне «Переименовать«.

- Нажмите клавишу ВВОД. Оба вхождения someWords в коде, а также текст someWords в комментарии к коду были переименованы.
Следующие шаги
См. также
- Фрагменты кода
- Навигация по коду
- Структура
- Функции «Перейти к определению» и «Показать определение»
- Рефакторинг
- Использование IntelliSense
Сокращение затрат на вычисления с помощью средств профилирования для оптимизации кода (C#, Visual Basic, C++, F#)
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Сокращение времени вычислений означает сокращение затрат, поэтому оптимизация кода может сэкономить деньги. В этой статье показано, как использовать различные средства профилирования, включая использование ЦП, выделение объектов NET и средство базы данных, чтобы помочь вам выполнить эту задачу. Вместо того, чтобы предоставить пошаговые инструкции, здесь вы узнаете, как эффективно использовать средства профилирования и как интерпретировать данные. Средство использования ЦП помогает записывать и визуализировать, где вычислительные ресурсы используются в приложении. Представления использования ЦП, такие как дерево вызовов и диаграмма пламени, предоставляют хорошую визуализировать время, затраченное в приложении. Кроме того, автоматическая аналитика может показать точные оптимизации, которые могут оказать большое влияние. Другие средства помогут изолировать проблемы.
Запуск исследования
- Чтобы сократить затраты на вычисления, запустите исследование, выполнив трассировку использования ЦП. Средство использования ЦП часто полезно начать исследования производительности и оптимизировать код для снижения затрат.
- Затем, если вы хотите получить дополнительные аналитические сведения, чтобы изолировать проблемы или повысить производительность, рассмотрите возможность сбора трассировки с помощью одного из других средств профилирования. Пример:
- Ознакомьтесь с использованием памяти. Для .NET сначала попробуйте средство выделения объектов .NET. Для .NET или C++можно просмотреть средство использования памяти.
- Если приложение использует операции ввода-вывода файлов, используйте средство ввода-вывода файлов.
- Если вы используете ADO.NET или Entity Framework, вы можете попробовать средство базы данных для изучения запросов SQL, точного времени запроса и т. д.
- Сведения о сравнении инструментов см. в разделе «Какой инструмент следует выбрать»?
Пример
Примеры снимков экрана, показанные в этой статье, основаны на приложении .NET, которое выполняет запросы к базе данных блогов и связанных записей блогов. Сначала вы изучите трассировку использования ЦП для поиска возможностей оптимизации и снижения затрат на вычисление. После получения общего представления о том, что происходит, вы также изучите трассировки из других средств профилирования, чтобы изолировать проблемы.
Чтобы собрать данные, показанные в этой статье, выполните следующие действия.
- Установка приложения на сборку выпуска
- Выберите средство использования ЦП из профилировщика производительности (ALT+F2). (Более поздние шаги включают несколько других инструментов.)
- В профилировщике производительности запустите приложение и соберите трассировку.
Проверка областей высокого использования ЦП
Начните с сбора трассировки с помощью средства использования ЦП. При загрузке диагностических данных сначала проверка начальную страницу отчета .diagsession, в которую отображаются верхние Аналитика и горячий путь. Горячий путь показывает путь к коду с наибольшим потреблением ЦП в приложении. Эти разделы могут предоставлять советы по быстрому выявлению проблем с производительностью, которые можно улучшить.
Вы также можете просмотреть горячий путь в представлении дерева вызовов. Чтобы открыть это представление, используйте ссылку «Открыть сведения » в отчете и выберите » Дерево вызовов».
В этом представлении снова отображается горячий путь, который показывает высокую загрузку ЦП для GetBlogTitleX метода в приложении, используя около 60 % от использования ЦП приложения. Тем не менее, значение самостоятельного ЦП для GetBlogTitleX низкого уровня, только около 10 %. В отличие от общего объема ЦП, значение самостоятельного ЦП исключает время, затраченное на другие функции, поэтому мы знаем, что мы смотрим дальше в представление «Дерево вызовов» для реального узких мест.

GetBlogTitleX выполняет внешние вызовы к двум библиотекам DLL LINQ, которые используют большую часть времени ЦП, как показано на очень высоких значениях само ЦП . Это первый ключ, который может потребоваться найти запрос LINQ в качестве области для оптимизации.
Чтобы получить визуальное дерево вызовов и другое представление данных, перейдите в представление «Диаграмма пламя » (выберите в том же списке, что и дерево вызовов). Здесь снова похоже GetBlogTitleX , что метод отвечает за большое количество использования ЦП приложения (показано желтым цветом). Внешние вызовы библиотек DLL LINQ отображаются под GetBlogTitleX полем, и они используют все время ЦП для метода.

Сбор дополнительных данных
Часто другие средства могут предоставить дополнительную информацию, чтобы помочь анализу и изолировать проблему. Например, так как мы определили библиотеки DLL LINQ, мы сначала рассмотрим средство базы данных. Этот инструмент можно выбрать с несколькими параметрами, а также использование ЦП. После сбора трассировки выберите вкладку «Запросы» на странице диагностика.
На вкладке «Запросы» для трассировки базы данных отображается первая строка с самым длинным запросом 2446 мс. В столбце «Записи» показано, сколько записей выполняется считывание запроса. Эти сведения можно использовать для последующего сравнения.

Проверив инструкцию SELECT, созданную LINQ в столбце запроса, вы определяете первую строку в качестве запроса, связанного с методом GetBlogTitleX . Чтобы просмотреть полную строку запроса, разверните ширину столбца, если это необходимо. Полная строка запроса:
SELECT "b"."Url", "b"."BlogId", "p"."PostId", "p"."Author", "p"."BlogId", "p"."Content", "p"."Date", "p"."MetaData", "p"."Title" FROM "Blogs" AS "b" LEFT JOIN "Posts" AS "p" ON "b"."BlogId" = "p"."BlogId" ORDER BY "b"."BlogId"Обратите внимание, что вы извлекаете здесь много значений столбцов, возможно, больше, чем вам нужно.
Чтобы узнать, что происходит с приложением с точки зрения использования памяти, соберите трассировку с помощью средства выделения объектов .NET (для C++, используйте средство использования памяти вместо него). В представлении «Дерево вызовов» в трассировке памяти отображается горячий путь и помогает определить область использования высокой памяти. Не удивительно на этом этапе, метод, как представляется, GetBlogTitleX создает много объектов! На самом деле более 900 000 выделений объектов.

Большинство созданных объектов — это строки, массивы объектов и int32. Вы можете увидеть, как эти типы создаются, проверив исходный код.
Оптимизировать код
Пришло время взглянуть на исходный GetBlogTitleX код. В средстве выделения объектов .NET щелкните метод правой кнопкой мыши и выберите «Перейти к исходному файлу«. В исходном коде для мы находим следующий код GetBlogTitleX , использующий LINQ для чтения базы данных.
foreach (var blog in db.Blogs.Select(b => new < b.Url, b.Posts >).ToList()) < foreach (var post in blog.Posts) < if (post.Author == "Fred Smith") < Console.WriteLine($"Post: "); > > >Этот код использует foreach циклы для поиска базы данных для любых блогов с «Фред Смит» в качестве автора. Глядя на это, вы можете увидеть, что многие объекты создаются в памяти: новый массив объектов для каждого блога в базе данных, связанные строки для каждого URL-адреса и значения свойств, содержащихся в записях, таких как идентификатор блога.
Вы выполняете небольшое исследование и найдете некоторые распространенные рекомендации по оптимизации запросов LINQ и создания этого кода.
foreach (var x in db.Posts.Where(p => p.Author.Contains("Fred Smith")).Select(b => b.Title).ToList())В этом коде вы внесли несколько изменений, чтобы оптимизировать запрос:
- Where Добавьте предложение и удалите один из foreach циклов.
- В этом примере проектируется только свойство Title в инструкции Select . Это все, что вам нужно в этом примере.
Затем повторите тестирование с помощью средств профилирования.
Проверка результатов
После обновления кода повторно запустите средство использования ЦП для сбора трассировки. В представлении «Дерево вызовов» показано, что GetBlogTitleX выполняется только 1754 мс, используя 37 % от общей суммы ЦП приложения, значительное улучшение с 59 %.

Перейдите в представление «Диаграмма пламя», чтобы увидеть другую визуализацию улучшения. В этом представлении GetBlogTitleX также используется меньшая часть ЦП.

Проверьте результаты трассировки средства базы данных, и только две записи считываются с помощью этого запроса вместо 100 000! Кроме того, запрос значительно упрощается и устраняет ненужные ранее созданные ранее левые соединения.

Затем повторно проверка результаты в средстве выделения объектов .NET, и посмотрите, что GetBlogTitleX отвечает только за выделение объектов 56 000 объектов, почти на 95% сокращение от 900 000!

Выполнение итерации
Может потребоваться несколько оптимизаций, и вы можете продолжить итерацию изменений кода, чтобы узнать, какие изменения повышают производительность и сокращают затраты на вычисление.
Редактор кода XAML
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code 
Редактор кода XAML в интегрированной среде разработки Visual Studio содержит все инструменты, необходимые для создания приложений WPF и UWP для платформы Windows, а также для Xamarin.Forms. В этой статье описываются обе роли, выполняемые редактором кода при разработке приложений на основе XAML, и уникальные функции редактора кода XAML в Visual Studio 2019.
Для начала давайте взглянем на интегрированную среду разработки (IDE) с открытым проектом WPF. На следующем рисунке показано несколько ключевых инструментов IDE, которые вы будете использовать вместе с редактором кода XAML.
Перечислим ключевые инструменты IDE, показанные на рисунке, начиная с нижнего левого угла и следуя по часовой стрелке.
- Окно редактора кода XAML — тема этой статьи, в которой вы создаете и редактируете код.
- Окно конструктора XAML, где разрабатывается пользовательский интерфейс.
- Закрепляемое окно панели элементов, в котором добавляются элементы управления для вашего пользовательского интерфейса.
- Кнопка Отладка, с помощью которой вы запускаете код и отлаживаете его.
(Вы также можете изменять код в реальном времени во время отладки с помощью функции Горячая перезагрузка XAML.) - Окно обозревателя решений, где можно управлять файлами, проектами и решениями.
- Окно Свойства, в котором можно изменять внешний вид пользовательского интерфейса и работу его элементов управления.
Давайте подробнее рассмотрим редактор кода XAML.
Пользовательский интерфейс редактора кода XAML
Хотя в окне редактора кода для приложений XAML используются некоторые элементы пользовательского интерфейса из нашей стандартной IDE, в нем также имеется несколько уникальных функций, упрощающих разработку приложений XAML.
Вот как выглядит окно редактора кода XAML.

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

Они работают следующим образом.
- При выборе вкладки Design (Конструктор) фокус из редактора кода XAML перемещается в Конструктор XAML.
- Кнопка переключения панелей позволяет менять местами расположения Конструктора XAML и редактора кода XAML в IDE.
- При выборе вкладки XAML фокус возвращается обратно в редактор кода XAML.
- При нажатии кнопки вызова XAML создается отдельное окно редактора кода XAML, которое находится за пределами IDE.
Справа в верхней строке находятся кнопки вертикальной ориентации, горизонтальной ориентации и сворачивания панели.

Они работают следующим образом.
- Кнопка вертикальной ориентации изменяет горизонтальное расположение Конструктора XAML и редактора кода XAML в IDE на вертикальное.
- Кнопка горизонтальной ориентации изменяет вертикальное расположение Конструктора XAML и редактора кода XAML в IDE на горизонтальное.
- Кнопка сворачивания панели позволяет сворачивать содержимое нижней панели, будь то редактор кода или Конструктор. (Чтобы восстановить нижнюю панель, нажмите ту же кнопку, которая будет уже кнопкой разворачивания панелей, еще раз.)
Вторая строка
Во второй строке в верхней части окна кода XAML имеются два раскрывающихся списка Window (Окно). Однако если вы просматриваете подсказку для этих элементов пользовательского интерфейса, она дополнительно идентифицирует их как элемент: Window и «Member: Window».

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

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

Средняя панель редактора кода
В средней панели редактора кода XAML отображается код. Здесь находится большинство функций, которые существуют в редакторе кода IDE. Мы коснемся некоторых универсальных функций IDE, которые могут быть полезными при разработке кода XAML. Мы также особо обратим ваше внимание на уникальные функции XAML в IDE.

Быстрые действия
Быстрые действия позволяют создавать и изменять код, а также выполнять его рефакторинг одним действием.
Например, с помощью быстрых действий можно быстро удалить ненужные директивы using из кода C# на вкладке MainWindow.xaml.cs.
Вот как это сделать.

- Наведите указатель мыши на директиву using, щелкните значок лампочки, а затем выберите в раскрывающемся списке действие Remove Unnecessary Usings (Удалить ненужные директивы using).
- Выберите, где вы хотите исправить все вхождения — в документе, проекте или решении.
- Проверьте, все ли правильно, в диалоговом окне предварительного просмотра, а затем нажмите Применить.
Эту функцию также можно вызвать из строки меню. Для этого последовательно выберите Правка>IntelliSense>Удаление и сортировка директив using.
Дополнительные сведения о параметрах директив using см. на странице Сортировка директив using. Дополнительные сведения об IntelliSense см. на странице IntelliSense в Visual Studio. Дополнительные сведения о некоторых распространенных способах использования быстрых действий разработчиками см. на странице Распространенные быстрые действия.
отслеживание изменений
С помощью цвета левого поля окна можно отслеживать изменения, внесенные в файл. Цвета связаны с выполняемыми вами действиями следующим образом.
- Если после открытия файла в него были внесены изменения, которые еще не сохранены, в левом поле окна (поле выделения) отображается желтая полоска.

- После того как вы сохраните изменения (не закрывая файл), полоска станет зеленой.

Включить или отключить эту функцию можно с помощью параметра Отслеживать изменения в настройках текстового редактора (Сервис>Параметры>Текстовый редактор).
Дополнительные сведения об отслеживании изменений— включение волнистых строк (также известных как «squiggles»), которые отображаются в строках кода, см. в разделе «Функции редактора» страницы редактора кода Visual Studio.
Контекстное меню
При изменении кода в редакторе кода XAML некоторые функции можно вызывать из контекстного меню, которое открывается при щелчке правой кнопкой мыши. Большинство этих функций повсеместно доступно повсюду в интегрированной среде разработки Visual Studio, но некоторые можно вызывать только при использовании редактора кода вместе с окном конструктора.

Перечислим эти функции и покажем, для чего они используются.
- View Code (Просмотр кода) — открывает окно кода языка программирования, которое обычно находится рядом с представлением по умолчанию, включающим окно конструктора и редактор кода XAML.
- View Designer (Просмотр Конструктора) — открывает представление по умолчанию, которое включает окно конструктора и редактор кода XAML. (Если вы уже находитесь в представлении по умолчанию, эта функция ничего не делает.)
- Quick Actions and Refactorings (Быстрые действия и рефакторинг) — выполняет рефакторинг, формирует или иным образом изменяет код одним действием. При наведении курсора на код вы увидите значок лампочки, если доступно быстрое действие или рефакторинг.
См. также: быстрые действия и код рефакторинга. - Rename. (Переименовать. ) — выполняет переименование только пространств имен. Если отсутствует пространство имен, которое можно переименовать, появляется сообщение об ошибке «Можно переименовывать только префиксы пространства имен».
- Remove and Sort Namespaces (Удалить и сортировать пространства имен) — удаляет неиспользуемые пространства имен, а затем сортирует оставшиеся.
- Peek Definition (Показать определение) — позволяет предварительно просматривать определение типа, не покидая текущее расположение в редакторе.
См. также: просмотр определения и просмотра и редактирования кода с помощью определения peek. - Перейти к определению — переходит к источнику типа или члена и открывает результат на новой вкладке.
См. также: Перейти к определению. - Surround with. (Окружить. ) — использование фрагментов кода, которые добавляются вокруг выбранного блока кода.
См. также: фрагменты расширения и фрагменты фрагментов. - Insert Snippet (Вставить фрагмент) — вставляет фрагмент кода в позицию курсора.
- Cut (Вырезать) — не требует пояснений.
- Copy (Копировать) — не требует пояснений.
- Paste (Вставить) — не требует пояснений.
- Outlining (Структурирование) — развертывание и свертывание разделов кода.
См. также: Выстраивание. - Source Control (Система управления версиями) — просмотр журнала внесения кода в репозиторий с открытым кодом.
Средняя панель, полоса прокрутки
Эта полоса прокрутки может не только прокручивать ваш код. С ее помощью можно также открывать другую панель редактора кода. Кроме того, можно использовать полосу прокрутки для более эффективного кодирования, добавляя в нее заметки или используя различные режимы отображения.
Разделение окна кода
В полосе прокрутки редактора кода в правом верхнем углу имеется кнопка разделения. Нажав ее, можно открыть другую панель редактора кода. Это очень удобно, так как эти панели работают независимо друг от друга, и их можно использовать для работы в разных местах кода.

Дополнительные сведения о том, как разделить окно редактора, см. на странице Управление окнами редактора.
Использование заметок или режима схемы
Вы можете изменять вид полосы прокрутки и содержащиеся в ней дополнительные функции. Например, многим пользователям нравится включать в полосу прокрутки заметки, которые обеспечивают визуальные подсказки, указывающие изменения кода, точки останова, закладки, ошибки и позицию курсора.
Некоторые предпочитают использовать режим схемы, в котором на полосе прокрутки показывается миниатюрное изображение строк кода. Разработчики, работающие с большим объемом кода в файле, часто находят, что в режиме схемы строки кода можно отслеживать более эффективно, чем при использовании полосы прокрутки по умолчанию.
Дополнительные сведения о том, как можно изменить параметры полосы прокрутки по умолчанию, см. на странице Настройка полосы прокрутки.
Функции, относящиеся к XAML
Большинство этих функций повсеместно доступно в интегрированной среде разработки Visual Studio, однако к некоторым из них добавлены аспекты, которые упрощают написание кода для разработчиков XAML.
Фрагменты кода XAML
Фрагменты кода — это небольшие блоки многократно используемого кода, которые можно вставить в файл кода с помощью команды контекстного меню Insert snippet (Вставить фрагмент) или сочетания клавиш (Ctrl+K, Ctrl+X). Технология IntelliSense была улучшена и теперь поддерживает отображение фрагментов кода XAML. Это работает как со встроенными фрагментами, так и с пользовательскими фрагментами, добавляемыми вручную. Некоторые готовые фрагменты кода XAML — #region , Column definition , Row definition , Setter и Tag .

Дополнительные сведения см. на страницах Фрагменты кода и Фрагменты кода C#.
Поддержка директивы #region в XAML
Поддержка директивы #region для разработчиков XAML в UWP и WPF появилась начиная с Visual Studio 2015, а недавно она появилась и в Xamarin.Forms. В Visual Studio 2019 мы продолжаем последовательно улучшать поддержку директивы #region. Например, начиная с версии 16.4 при вводе

Вы можете использовать директиву region, чтобы группировать разделы кода, которые хотите сворачивать или разворачивать.
Your code is here
Дополнительные сведения о директиве #region см. на странице #region (справочник по C#). Дополнительные сведения о развертывании и свертывании разделов кода см. на странице Структурирование.
Комментарии в XAML
Разработчики часто предпочитают документировать свой код с помощью комментариев. Вы можете добавлять комментарии в код XAML, который находится на вкладке MainWindow.xaml, следующими способами.
- Введите после комментария.
- Введите
- Выберите код, который необходимо закомментировать, и нажмите кнопку Закомментировать на панели инструментов в IDE. Чтобы отменить это действие, нажмите кнопку Раскомментировать.

- Выберите код, который хотите закомментировать, а затем нажмите сочетания клавиш Ctrl+K, Ctrl+C. Чтобы раскомментировать выбранный код, нажмите сочетания клавиш Ctrl+K, Ctrl+U.
Дополнительные сведения об использовании комментариев в коде C# на вкладке MainWindow.xaml.cs см. на странице Комментарии документации.
Лампочки в XAML
Значки лампочки, которые появляются в вашем коде XAML, являются частью быстрых действий, которые можно использовать для рефакторинга, создания или изменения кода.
Приведем несколько примеров того, как они помогают при кодировании в XAML.
- Удаление ненужных пространств имен. В редакторе кода XAML ненужные пространства имен отображаются затененными. Если навести указатель мыши на ненужную директиву using, появится лампочка. Когда вы выбираете в раскрывающемся списке действие Удалить ненужные пространства имен, появляется окно предварительного просмотра, показывающее то, что вы можете удалить.

- Переименование пространства имен. Функция переименования пространства имен, которую можно вызвать из контекстного меню после выделения пространства имен, позволяет одновременно изменить несколько экземпляров параметра. Эту функцию также можно вызвать из строки меню, последовательно выбрав пункты Edit (Правка)>Refactor> (Рефакторинг)Rename (Переименовать), или нажать сочетание клавиш Ctrl+R, а затем снова Ctrl+R.
Дополнительные сведения см. на странице Рефакторинг для переименования символов кода.
Условный код XAML для UWP
Условный КОД XAML предоставляет способ использования метода ApiInformation.IsApiContractPresent в разметке XAML. Благодаря этому можно задавать свойства и создавать экземпляры объектов в разметке в зависимости от наличия API, а необходимость использования кода программной части отсутствует.
Визуализатор структуры XAML
Функция визуализатора структуры в редакторе кода позволяет отображать направляющие структуры, которые представляют собой вертикальные пунктирные линии, указывающие парные открывающие и закрывающие теги в вашем коде. С помощью этих вертикальных линий можно легко определять начало и конец логических блоков.
Дополнительные сведения см. на странице Перемещение по коду.
IntelliCode для XAML
Вы легко можете распознать варианты IntelliCode, так как они отображаются вверху списка и отмечены звездочками.

Дополнительные сведения см. на странице Общие сведения об IntelliCode.
Параметры
Дополнительные сведения обо всех параметрах в IDE Visual Studio см. на странице Функции редактора кода.
Дополнительные параметры XAML
С помощью диалогового окна Параметры можно изменить параметры по умолчанию для редактора кода XAML. Чтобы просмотреть эти параметры, последовательно выберите Инструменты>Параметры>Текстовый редактор>XAML.

Вы также можете открыть диалоговое окно «Параметры», используя сочетания клавиш. Вот как: нажмите клавиши CTRL+Q для поиска интегрированной среды разработки, введите параметры и нажмите клавишу ВВОД. Затем нажмите Ctrl+E для поиска диалогового окна «Параметры», введите Текстовый редактор, нажмите клавишу ВВОД, введите XAML и снова нажмите ВВОД.
Дополнительные сведения о сочетаниях клавиш см. на странице Рекомендации по сочетаниям клавиш в Visual Studio.
Универсальные параметры текстового редактора
В диалоговом окне Параметры для XAML три следующих первых элемента являются универсальными параметрами для всех языков программирования, которые поддерживает IDE Visual Studio. Воспользуйтесь ссылками в следующей таблице, чтобы получить дополнительные сведения об этих параметрах и их использовании.
Имя Дополнительная информация Общие Диалоговое окно «Параметры»: текстовый редактор > «Все языки» Полосы прокрутки Параметры, текстовый редактор, все языки, полосы прокрутки Вкладки «Параметры», «Текстовый редактор», «Все языки», «Табуляция» Параметры текстового редактора, относящиеся к XAML
В следующей таблице приведены параметры в диалоговом окне Параметры, которые облегчают внесение изменений при разработке приложений на базе XAML. Воспользуйтесь ссылками в этой таблице, чтобы получить дополнительные сведения об этих параметрах и их использовании.
Имя Дополнительная информация Форматирование «Параметры», «Текстовый редактор», XAML, «Форматирование» Разное Параметры, текстовый редактор, XAML, прочие Параметр Capitalize event handler method name (Писать имя метода обработчика события прописными буквами) в разделе Miscellaneous (Прочие) особенно полезен для разработчиков XAML. Так как это новый параметр, он отключен по умолчанию, но мы полагаем, что вы включите его для поддержки соответствующего регистра в вашем коде.
Следующие шаги
Дополнительные сведения о том, как изменять код в реальном времени при выполнении приложения в режиме отладки, см. на странице Горячая перезагрузка XAML.
См. также
- Возможности редактора кода в Visual Studio
- XAML в приложениях UWP
- XAML в приложениях Xamarin.Forms
Комментирование кода
У меня на компьютере установлен Visual Studio 2012 русская версия, скачивал с официального сайта. Хочу спросить: какими клавишами можно сделать комментирование и расскомментирвание кода такого формата // и такого формата /* код */? В интернете нашёл эти сочетания клавиш: ctrl+c, ctrl+ k устанавливает комментарий такого формата — //, из этих комбинаций иногда работает комбинация ctrl+c — как не разобрался; данная комбинация ctrl+u должна якобы расскомментировать комментарий но комбинация не работает. Я нажимал все клавиши с ctrl+ и имеющиеся кнопки на клавиатуре и как расскомментировать или установить комментарий блока /* код */ так и не нашёл.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:Комментирование кода
#ifndef ENHANCEDSAFEARRAY_H #define ENHANCEDSAFEARRAY_H #include "safearray.h" template.Найти и вывести все слова начинающиеся и заканчивающиеся на одну и ту же букву (комментирование кода)
Прокомментируйте пожалуйста код: /* Ввести строку длинной до 500 символов.Алфавит русские буквы и.Комментирование программ С++
Пожалуйста, срочно помогите , объясните как работает тут this . не понимаю зачем он вообще .Комментирование программ С++
Помогите с комментариями к программе, пожалуйста, в воскресенье зачет уже Хотя бы основные.
