Создание в результате использования

Функция создания в результате использования позволяет использовать классы и члены до их определения. Можно создать заглушку для еще не определенного класса, конструктора, метода, свойства, поля или перечисления, которое необходимо использовать. Новые типы и члены можно создавать, не покидая текущего расположения в коде. Это снижает до минимума нарушения рабочего процесса.

Функция "Создание в результате использования" поддерживает стили программирования, такие как разработка на основе тестирования.

Применение функции создания в результате использования в C#

Каждый неопределенный идентификатор подчеркивается волнистой чертой. При перемещении указателя мыши на такой идентификатор в подсказке появляется сообщение об ошибке.

Для отображения нужных параметров можно выполнить одну из следующих процедур:

  • Щелкните неопределенный идентификатор. Короткое подчеркивание появится под крайним левым символом. Поместите указатель мыши на это подчеркивание, чтобы появился смарт-тег (значок). Щелкните смарт-тег.

  • Щелкните неопределенный идентификатор и нажмите сочетание клавиш CTRL+. (точка).

  • Щелкните неопределенный идентификатор правой кнопкой мыши и выберите команду Создать.

В число появившихся параметров могут входить следующие:

  • Создать заглушку свойства

  • Создать заглушку поля

  • Создать заглушку метода

  • Создать класс

  • Создать новый тип (для класса, структуры, интерфейса или перечисления)

Применение функции создания в результате использования в Visual Basic

Каждый неопределенный идентификатор подчеркивается волнистой чертой, и его крайний правый символ подчеркивается короткой чертой. При перемещении указателя мыши на такой идентификатор в подсказке появляется сообщение об ошибке.

Для отображения нужных параметров можно выполнить одну из следующих процедур:

  • Поместите указатель мыши на неопределенный идентификатор. Появится смарт-тег (значок). Щелкните смарт-тег.

  • Щелкните неопределенный идентификатор и нажмите сочетание клавиш CTRL+. (точка).

  • В окне Список ошибок дважды щелкните соответствующую строку ошибок.

В число появившихся параметров могут входить следующие:

  • Создать заглушку свойства

  • Создать заглушку поля

  • Создать заглушку метода

  • Создать класс

  • Создать интерфейс

  • Создать новый тип (для класса, структуры, интерфейса, перечисления, делегата или модуля)

Создание заглушки свойства

Если код ссылается на неопределенное свойство, щелкните Создать заглушку свойства. Заглушка свойства создается в соответствующем классе. Тип возвращаемого свойства определяется из контекста.

В качестве примера предположим, что создается свойство InstanceProperty из оператора в приведенном далее коде.

Dim cust As New Customer()
Dim city As String = cust.InstanceProperty
Customer cust = new Customer();
string city = cust.InstanceProperty;

При создании свойства в классе Customer создается следующая заглушка.

Property InstanceProperty() As String
public string InstanceProperty { get; set; }

Если свойство вызывается в типе, а не в экземпляре, то созданная заглушка будет статическим свойством (в C#) или общим свойством (в Visual Basic).

Например, представим, что свойство создается из следующего оператора (предполагается, что Customer представляет собой имя класса).

Dim description As String = Customer.SharedProperty
string description = Customer.StaticProperty;

При создании свойства в классе Customer создается следующая заглушка.

Shared Property SharedProperty As String
public static string StaticProperty { get; set; }

Если свойство вызывается без квалификации (со ссылкой на элемент текущего типа), то созданная заглушка будет статической, если она вызывается из статического метода. В противном случае это будет свойство экземпляра.

Например, предположим, что свойство создается из следующего оператора.

Dim title As String = UnqualifiedProperty
string title = UnqualifiedProperty;

При создании свойства в текущем классе создается следующая заглушка.

Private Property UnqualifiedProperty() As String
public string UnqualifiedProperty { get; set; }

Создание заглушки метода

Если код ссылается на неопределенный метод, щелкните Создать заглушку метода. Заглушка метода создается в соответствующем классе.

Тип каждого параметра и тип возвращаемого значения определяются из контекста. Тип "объект" используется, когда тип не может быть выведен, например в анонимных типах или в неявно типизированных локальных переменных (т. е. переменных, заданных с помощью ключевого слова var).

Имя каждого параметра производится от имен аргументов, передаваемых в вызов метода.

В качестве примера предположим, что создается метод InstanceMethod из оператора в приведенном далее коде.

Dim cust As New Customer()
Dim itemNumber = 3
Dim itemName = "abc"
cust.InstanceMethod(itemNumber, itemName, 4)
Customer cust = new Customer();
int itemNumber = 3;
string itemName = "abc";
cust.InstanceMethod(itemNumber, itemName, 4);

При создании метода в соответствующем классе создается следующая заглушка.

Sub InstanceMethod(ByVal itemNumber As Integer, ByVal itemName As String, ByVal p3 As Integer)
    Throw New NotImplementedException
End Sub
internal void InstanceMethod(int itemNumber, string itemName, int p)
{
    throw new NotImplementedException();
}

Если метод вызывается в типе, а не в экземпляре, то созданная заглушка будет статическим методом (в C#) или общим методом (в Visual Basic).

Создание заглушки метода для события

В Visual Basic можно создать метод обработчика событий для события, на которое ссылается Оператор AddHandler или Оператор RemoveHandler.

В качестве примера предположим, что создается метод EventHandler из одного из следующих операторов в коде.

AddHandler obj.Ev_Event, AddressOf EventHandler
RemoveHandler obj.Ev_Event, AddressOf EventHandler

При создании метода в текущем классе создается следующая заглушка.

Private Sub EventHandler()
    Throw New NotImplementedException
End Sub

Создание заглушки конструктора

Если код ссылается на неопределенный конструктор, щелкните Создать заглушку конструктора. Заглушка конструктора создается в соответствующем классе. Тип каждого параметра определяется из контекста.

Имена параметров конструктора проверяются. Если класс имеет свойства, имена которых соответствуют именам этих параметров, то в конструкторе предлагается код для хранения значений аргументов этих свойств.

В качестве примера предположим, что создается конструктор для класса Example из оператора в приведенном далее коде.

Dim total As Long = 12
Dim exampleTest As New Example(5, total, Date.Now)
long total = 12;
Example exampleTest = new Example(5, total, System.DateTime.Now);

При создании этого конструктора в классе Example создаются следующие частные переменные, если они еще не существуют.

Private _p1 As Integer
Private _total As Long
Private _p3 As Date
private int p;
private long total;
private DateTime dateTime;

Создается следующая заглушка конструктора.

Sub New(ByVal p1 As Integer, ByVal total As Long, ByVal p3 As Date)
    ' TODO: Complete member initialization 
    _p1 = p1
    _total = total
    _p3 = p3
End Sub
public Example(int p, long total, DateTime dateTime)
{
    // TODO: Complete member initialization
    this.p = p;
    this.total = total;
    this.dateTime = dateTime;
}

В классе можно создать несколько конструкторов. Дополнительный конструктор может быть создан, если в вызове конструктора имеется другое количество аргументов или другие типы аргументов.

В Visual Basic конструктор также может быть создан при создании класса. Дополнительные сведения см. в следующем подразделе этого раздела.

Создание класса

Если код ссылается на неопределенный класс или другой тип, отображаются варианты Создать класс и Создать новый тип.

При выборе варианта Создать класс создается пустой класс в новом файле проекта. Этот новый файл открывается в редакторе кода (но не получает фокус). Это кратчайший путь создания нового типа класса с модификаторами доступа по умолчанию в новом файле текущего проекта.

Например, предположим, что класс создается из следующего оператора.

Dim cust As Customer
Customer cust;

При создании класса в новом файле проекта создается следующая заглушка нового класса.

Class Customer

End Class
namespace CSharpWindowsApp
{
    class Customer
    {
    }
}

Команду Создать класс можно также использовать, когда наследуемый базовый класс не определен в определении класса.

Создание класса вместе с конструктором

В Visual Basic создаваемый класс при необходимости будет включать конструктор.

Например, предположим, что класс создается из следующего оператора.

Dim total = 3
Dim exampleTest As New Example(5, total, Date.Now) With {.Description = "book"}

При создании класса в новом файле проекта создается следующая заглушка нового класса. В этом классе создается конструктор. Создается свойство Description для инициализатора объекта, имеющегося в предложении With в предыдущем коде.

Class Example
    Private _p3 As Date
    Private _total As Integer
    Private _p1 As Integer

    Sub New(ByVal p1 As Integer, ByVal total As Integer, ByVal p3 As Date)
        ' TODO: Complete member initialization 
        _p1 = p1
        _total = total
        _p3 = p3
    End Sub

    Property Description As String
End Class

Создание новых типов с помощью дополнительных вариантов

Если код ссылается на неопределенный класс, интерфейс, перечисление, структуру (C#) или структуру (Visual Basic), то отображаются варианты Создать класс и Создать новый тип. Это представлено на следующих иллюстрациях.

Visual Basic

Контекстное меню смарт-тега на языке Visual Basic

Visual C#

Контекстное меню смарт-тега на языке C#

Выберите команду Создать новый тип, чтобы открыть диалоговое окно Создание нового типа, в котором можно выбрать уровень доступа, вид, расположение проекта и имя файла.

Параметр Создать другой объект предоставляет дополнительные возможности при создании класса. Можно разместить этот класс в существующем файле, указать модификаторы доступа или добавить новый файл в другой проект решения.

На следующей иллюстрации представлено диалоговое окно Создание нового типа.

Диалоговое окно "Создание нового типа"

Диалоговое окно "Сформировать новый тип"

В следующей таблице представлены варианты, доступные в диалоговом окне Создание нового типа.

Параметр

Варианты для C#

Варианты для Visual Basic

Доступ

По умолчанию, открытый, внутренний или закрытый.

По умолчанию, дружественный или общий.

Тип

Класс, структура, интерфейс или перечисление.

Класс, структура, интерфейс, перечисление, делегат или модуль.

Положение проекта

Текущий проект или другой проект в решении.

Текущий проект или другой проект в решении.

Имя файла

Создать новый файл с именем или Добавить в существующий файл с именем.

Создать новый файл с именем или Добавить в существующий файл с именем.

Если тип создается в новом файле, то этот новый файл будет содержать установленный по умолчанию набор директив using для класса, создаваемого в диалоговом окне Добавление нового элемента.

Если тип создается в другом проекте решения, в текущий файл добавляется директива using, ссылающаяся на этот проект.

Создание заглушки интерфейса

Для создания кода из неопределенного интерфейса выберите команду Создать новый тип. Откроется диалоговое окно Создание нового типа. В списке Вид щелкните Интерфейс. В Visual Basic можно также выбрать Создание интерфейса.

В качестве примера предположим, что создается интерфейс IAuto из оператора в приведенном далее коде.

Public Class Sedan : Implements IAuto
End Class
public class Sedan : IAuto
{
}

При создании интерфейса создается следующая заглушка.

Interface IAuto

End Interface
interface IAuto
{
}

Создание заглушки делегата

Для создания кода из неопределенного делегата в Visual Basic выберите команду Создать новый тип. Откроется диалоговое окно Создание нового типа. В списке Вид щелкните Делегат.

В качестве примера предположим, что создается делегат MathOperator из оператора в приведенном далее коде.

Dim delInstance As New MathOperator(AddressOf AddNumbers)

При создании делегата создается следующая заглушка.

Delegate Sub MathOperator()

Режим предложений IntelliSense

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

В режиме предложений IntelliSense напечатанный в редакторе кода текст вставляется в код после сохранения записи. При сохранении в режиме завершения IntelliSense запись, выделенная в списке членов, вставляется в код.

При открытом окне IntelliSense для переключения между режимом завершения и режимом предложений можно использовать сочетание клавиш CTRL+ALT+ПРОБЕЛ.

Дополнительные сведения см. в разделе Список членов.

См. также

Задачи

Пошаговое руководство. Основанная на тестировании поддержка с помощью функции "Создание в результате использования"

Другие ресурсы

Вспомогательные средства кодирования

Автоматическое генерирование кода