Фрагменты кода C#
В Visual Studio можно использовать фрагменты кода для добавления часто используемого кода в файлы кода C#. Фрагменты кода ускоряют, упрощают написание программ и делают этот процесс более надежным.
Фрагменты кода расширения добавляются в указанные точки вставки. Фрагменты кода в окружении добавляются вокруг выбранного кода и доступны только для C# и C++ . Инструкции по вставке или окружению кода фрагментами кода см . в разделе фрагменты кода.
Справочник по фрагменту кода
Фрагменты кода работают так же, как в C# и C++, но набор фрагментов кода по умолчанию отличается. Следующие фрагменты кода C# включены в Visual Studio по умолчанию:
Имя или ярлык | Description | Допустимые расположения вставки |
---|---|---|
#if | Создает директиву #if и директиву #endif . | В любом месте. |
#region | Создает директиву #region и директиву #endregion . | В любом месте. |
~ | Создает метод завершения (деструктор) для включающего класса. | Внутри класса. |
атрибут | Создает объявление класса, производного от Attribute. | Внутри пространства имен (включая глобальное пространство имен), класса или структуры. |
включен | Создает блок checked. | Внутри метода, индексатора, метода доступа к свойству или событию. |
class | Создает объявление класса. | Внутри пространства имен (включая глобальное пространство имен), класса или структуры. |
ctor | Создает конструктор для включающего класса. | Внутри класса. |
cw | Создает вызов WriteLine. | Внутри метода, индексатора, метода доступа к свойству или событию. |
do | Создает цикл выполнения. | Внутри метода, индексатора, метода доступа к свойству или событию. |
else | Создает блок if-else. | Внутри метода, индексатора, метода доступа к свойству или событию. |
перечисление | Создает объявление типа enum. | Внутри пространства имен (включая глобальное пространство имен), класса или структуры. |
равно | Создает объявление метода, которое переопределяет метод Equals, определенный в классе Object. | Внутри класса или структуры. |
отрисовки | Создает объявление класса, производного от исключения (по умолчанию Exception). | Внутри пространства имен (включая глобальное пространство имен), класса или структуры. |
для | Создает цикл for. | Внутри метода, индексатора, метода доступа к свойству или событию. |
foreach | Создает цикл foreach. | Внутри метода, индексатора, метода доступа к свойству или событию. |
forr | Создает цикл for, уменьшающий переменную цикла после каждой итерации. | Внутри метода, индексатора, метода доступа к свойству или событию. |
if | Создает блок if. | Внутри метода, индексатора, метода доступа к свойству или событию. |
Индексатор | Создает объявление индексатора. | Внутри класса или структуры. |
интерфейс | Создает объявление interface. | Внутри пространства имен (включая глобальное пространство имен), класса или структуры. |
invoke | Создает блок, который безопасно вызывает событие. | Внутри метода, индексатора, метода доступа к свойству или событию. |
iterator | Создает итератор. | Внутри класса или структуры. |
iterindex | named Создает итератор и пару индексатора с помощью вложенного класса. |
Внутри класса или структуры. |
lock | Создает блок lock. | Внутри метода, индексатора, метода доступа к свойству или событию. |
mbox | Создает вызов System.Windows.Forms.MessageBox.Show. Может потребоваться добавить ссылку на System.Windows.Forms.dll. | Внутри метода, индексатора, метода доступа к свойству или событию. |
пространство имен | Создает объявление namespace. | Внутри пространства имен, включая глобальное пространство имен. |
prop | Создает объявление свойства autoimmented. | Внутри класса или структуры. |
propfull | Создает объявление свойства с методами доступа get и set . |
Внутри класса или структуры. |
propg | Создает свойство autoimplemented только для чтения с частным set методом доступа. |
Внутри класса или структуры. |
sim | Создает объявление метода static int Main. | Внутри класса или структуры. |
struct | Создает объявление struct. | Внутри пространства имен (включая глобальное пространство имен), класса или структуры. |
svm | Создает объявление метода static int Main. | Внутри класса или структуры. |
switch | Создает блок switch. | Внутри метода, индексатора, метода доступа к свойству или событию. |
try | Создает блок try-catch. | Внутри метода, индексатора, метода доступа к свойству или событию. |
tryf | Создает блок try-finally. | Внутри метода, индексатора, метода доступа к свойству или событию. |
не включен | Создает блок unchecked. | Внутри метода, индексатора, метода доступа к свойству или событию. |
unsafe | Создает блок unsafe. | Внутри метода, индексатора, метода доступа к свойству или событию. |
using | Создает директиву using. | Внутри пространства имен, включая глобальное пространство имен. |
while | Создает цикл while. | Внутри метода, индексатора, метода доступа к свойству или событию. |
Функции фрагмента кода C#
Функции указываются в элементе Function фрагмента кода. В следующей таблице описаны три функции, доступные для использования с элементом Function
в фрагментах кода C#.
Function | Description |
---|---|
GenerateSwitchCases(EnumerationLiteral) |
Формирует оператор switch и набор операторов case для членов перечисления, заданных параметром EnumerationLiteral . Параметр EnumerationLiteral должен быть ссылкой на литерал перечисления или тип перечисления. |
ClassName() |
Возвращает имя класса, содержащего вставленный фрагмент кода. |
SimpleTypeName(TypeName) |
TypeName Сокращает параметр до самой простой формы в контексте, в котором был вызван фрагмент кода. |
Пример GenerateSwitchCases
Ниже представлен пример использования функции GenerateSwitchCases
. При вставке этого фрагмента и вводе перечисления в $switch_on$
литерал литерал $cases$
создает case
оператор для каждого значения перечисления.
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>switch</Title>
<Shortcut>switch</Shortcut>
<Description>Code snippet for switch statement</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>expression</ID>
<ToolTip>Expression to switch on</ToolTip>
<Default>switch_on</Default>
</Literal>
<Literal Editable="false">
<ID>cases</ID>
<Function>GenerateSwitchCases($expression$)</Function>
<Default>default:</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[
switch ($expression$)
{
$cases$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Пример ClassName
Ниже представлен пример использования функции ClassName
. При вставке этого фрагмента $classname$
литерал заменяется именем заключенного класса в этом расположении в файле кода.
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Common constructor pattern</Title>
<Shortcut>ctor</Shortcut>
<Description>Code Snippet for a constructor</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<Default>int</Default>
</Literal>
<Literal>
<ID>name</ID>
<Default>field</Default>
</Literal>
<Literal default="true" Editable="false">
<ID>classname</ID>
<ToolTip>Class name</ToolTip>
<Function>ClassName()</Function>
<Default>ClassNamePlaceholder</Default>
</Literal>
</Declarations>
<Code Language="csharp" Format="CData">
<![CDATA[
public $classname$ ($type$ $name$)
{
this._$name$ = $name$;
}
private $type$ _$name$;
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Пример SimpleTypeName
Этот пример показывает, как использовать функцию SimpleTypeName
. При вставке этого фрагмента в файл $SystemConsole$
кода литерал заменяется простейшей формой Console типа в контексте, в котором вы вызвали фрагмент кода.
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Console_WriteLine</Title>
<Shortcut>cw</Shortcut>
<Description>Code snippet for Console.WriteLine</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal Editable="false">
<ID>SystemConsole</ID>
<Function>SimpleTypeName(global::System.Console)</Function>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[
$SystemConsole$.WriteLine();
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>