Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретический_курс.doc
Скачиваний:
36
Добавлен:
10.11.2019
Размер:
7.68 Mб
Скачать

2. Расширение кода проекта

В Visual Studio 2010 можно вставлять готовые блоки кода С# выбором соответствующих пунктов в меню, вызовом контекстных меню по щелчку правой кнопкой мыши и/или использованием соответствующих клавиатурных комбинаций быстрого вызова. Число доступных шаблонов для расширения кода впечатляет. В целом их можно поделить на две основных группы:

  • Шаблоны для вставки фрагментов кода (Code Snippet). Эти шаблоны позволяют вставлять общие блоки кода в месте расположения курсора мыши.

  • Шаблоны для окружения кода (Surround With). Эти шаблоны позволяют помещать блок избранных операторов в рамки соответствующего контекста.

Чтобы посмотреть на эту функциональность в действии, давайте предположим, что требуется обеспечить проход по поступающим в метод Main параметрам в цикле foreach.

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

Поместим курсор мыши после первой открывающей фигурной скобки в методе Main. Одним из способов активизации фрагмента кода является выполнение щелчка правой кнопкой мыши и выбора в контекстном меню пункта Insert Snippet (Вставить фрагмент...) или Surround With (Разместить во фрагменте...). Это приводит к отображению списка всех относящихся к данной категории фрагментов кода (для закрытия контекстного меню достаточно нажать клавишу Esc). В качестве клавиатурной комбинации быстрого вызова можно просто ввести имя интересующего фрагмента кода, которым в данном случае является foreach:

Рис. 2. 1. Вставка фрагмента кода

Отыскав фрагмент кода, который требуется активизировать, нажмём два раза клавишу Таb. Это приведет к автоматическому завершению всего фрагмента кода и оставлению ряда меток-заполнителей, в которых останется только ввести необходимые значения, чтобы фрагмент был готов. Нажимая клавишу Tab, можно переходить от одной метки-заполнителя к другой и заполнять пробелы (по завершении нажмите клавишу Esc для выхода из режима редактирования фрагмента кода).

В результате щелчка правой кнопкой мыши и выбора в контекстном меню пункта Surround With (Разместить во фрагменте) будет тоже появляться список возможных вариантов. При использовании средства Surround With обычно сначала выбирается блок операторов кода для представления того, что должно применяться для их окружения (например, блок try-catch).

5.8. Конструктор классов Конструктор классов

В среде разработки Visual Studio 2010 имеется возможность конструировать классы визуальным образом. Для этого в составе Visual Studio 2010 поставляется утилита под названием Class Designer (Конструктор классов), которая позволяет просматривать и изменять отношения между типами (классами, интерфейсами, структурами, перечислениями и делегатами) в проекте. С помощью этой утилиты можно визуально добавлять или удалять члены из типа с отражением этих изменений в соответствующем файле кода на С#, а также в диаграмме классов.

Для работы с этой утилитой сначала необходимо вставить новый файл диаграммы классов. Делать это можно несколькими способами, одним из которых является щелчок на кнопке View Class Diagram (Перейти к диаграмме классов) в правой части окна Solution Explorer (Обозреватель классов), как показано на рисунке ниже (при этом важно, чтобы в окне был выбран проект, а не решение):

Рис. 1. 1. Создание диаграммы классов для проекта LC_Console

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

Рис. 1. 2. Диаграмма классов проекта LC_Console

Эта утилита работает вместе с двумя другими средствами Visual Studio 2010 — окном Class Details (Сведения о классах), которое можно открыть путём выбора в меню View (Вид) пункта Other Windows (Другие окна), и панелью Class Designer Toolbox (Конструктор классов), которую можно отобразить выбором в меню View (Вид) пункта Toolbox (Панель элементов).

В окне Class Details не только отображаются детали выбранного в текущий момент элемента в диаграмме, но также можно изменять его существующие члены и вставлять новые на лету:

Рис. 1. 3. Окно «Сведения о классах» проекта LC_Console

Что касается панели Class Designer Toolbox, которую, как уже было сказано, можно активизировать через меню Вид, то она позволяет вставлять в проект новые типы (и создавать между ними желаемые отношения) визуальным образом. Следует иметь в виду, что для просмотра этой панели требуется, чтобы окно диаграммы классов было активным. По мере выполнения этих действий IDE-среда автоматически создаёт незаметным образом соответствующие новые определения типов на С#:

Рис. 1. 4. Окно Конструктор классов»

Для примера давайте перетащим из панели Class Designer Toolbox в окно Class Designer новый элемент Class (Класс), в отрывшемся окне назначим ему имя MyСаr, а затем с помощью окна Class Details добавим в него общедоступное поле типа string по имени AutoName:

Рис. 1. 5. Добавление нового класса и поля для проекта LC_Console

Теперь давайте активизируем утилиту Class Designer еще раз и перетащим на поверхность конструктора новый элемент типа Class, присвоив ему имя MySportCar. Затем выберем в Class Designer Toolbox пиктограмму Inheritance (Наследование) и щёлкнем в верхней части пиктограммы MySportCar. Далее, не отпуская левую кнопку мыши, перетащим курсор мыши на поверхность пиктограммы класса MyСаr и отпустим её. Правильное выполнение всех перечисленных выше действий приведёт к тому, что класс MySportCar станет наследоваться от класса MyСаr:

Рис. 1. 6. Итоговая диаграмма классов проекта LC_Console

Чтобы завершить данный пример, осталось обновить сгенерированный MySportCar, добавив в него общедоступный метод с именем GetAutoName:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace LC_Console

{

public class MySportCar : MyCar

{

public string GetAutoName()

{

AutoName = "Volga Siber";

return AutoName;

}

}

}