Под «генерацией» я подразумеваю автоматическое создание кода, необходимого для конкретной выбранной (набора) переменных.
Но любые более явные разъяснения или комментарии по поводу хорошей практики приветствуются.
Под «генерацией» я подразумеваю автоматическое создание кода, необходимого для конкретной выбранной (набора) переменных.
Но любые более явные разъяснения или комментарии по поводу хорошей практики приветствуются.
Вместо использования Ctrl + K, X вы также можете просто набрать prop
, а затем дважды нажать Tab.
В Visual Studio также есть функция, которая генерирует свойство из частной переменной.
Если щелкнуть переменную правой кнопкой мыши, во всплывающем контекстном меню щелкните элемент" Рефакторинг "и выберите Инкапсулировать поле .... Это создаст свойство получателя / установщика для переменной.
Я не слишком большой поклонник этой техники, так как ее немного неудобно использовать, если вам нужно создать много геттеров / сеттеров, и она помещает свойство непосредственно под частное поле, что меня беспокоит, потому что я обычно все мои частные поля сгруппированы вместе, и эта функция Visual Studio нарушает форматирование моего класса.
Я использую Visual Studio 2013 Professional.
Вы также устанавливаете курсор для выбора свойства. Используйте меню Правка Рефакторинг Инкапсулировать поле ...
Другая информация:
Начиная с C # 3.0 (19 ноября 2007 г.), мы можем использовать автоматически реализуемые свойства (это просто синтаксический сахар).
А также
private int productID;
public int ProductID
{
get { return productID; }
set { productID = value; }
}
становится
public int ProductID { get; set; }
Вы имеете в виду автоматическое создание? Если вы не это имеете в виду:
В Visual Studio 2008 есть самая простая реализация для этого:
public PropertyType PropertyName { get; set; }
В фоновом режиме это создает подразумеваемую переменную экземпляра, в которой сохраняется и извлекается ваше свойство.
Однако, если вы хотите добавить больше логики в свои свойства, вам понадобится переменная экземпляра для нее:
private PropertyType _property;
public PropertyType PropertyName
{
get
{
//logic here
return _property;
}
set
{
//logic here
_property = value;
}
}
Предыдущие версии Visual Studio всегда использовали этот метод от руки.
property_
вместо перед _property
?
- person Julen; 30.03.2011
Вы также можете использовать "propfull" и дважды нажать TAB.
Переменная и свойство с get и set будут сгенерированы.
В Visual Studio 2019 выберите свои свойства следующим образом:
Затем нажмите Ctrl+r
Затем нажмите Ctrl+e
Появится диалоговое окно с предварительным просмотром изменений, которые произойдут с вашим кодом. Если все в порядке (а в большинстве случаев так и будет), нажмите OK
.
Если вы используете Visual Studio 2005 и новее, вы можете очень быстро создать сеттер / получатель с помощью команды вставки фрагмента.
Щелкните код правой кнопкой мыши, выберите Вставить фрагмент (Ctrl + K, X), а затем выберите " опора »из списка.
Если вы используете ReSharper, перейдите в меню ReSharper Код Создать ...
(Или нажмите Alt + Ins внутри окружающего класса), и вы получите все варианты создания геттеров и / или сеттеров, о которых вы только можете подумать :-)
Используйте ключевое слово propfull
.
Он сгенерирует свойство и переменную.
Введите ключевое слово propfull
в редакторе, а затем две клавиши TAB. Он сгенерирует такой код:
private data_type var_name;
public data_type var_name1{ get;set;}
Видео, демонстрирующее использование фрагмента 'propfull' ( среди прочего), при 4 мин 11 сек.
Я создал свой собственный фрагмент, который только добавляет {get; set;}
. Я сделал это только потому, что считаю prop
Tab неуклюжим.
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>get set</Title>
<Shortcut>get</Shortcut>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[{get; set;}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
При этом вы вводите свои PropType и PropName вручную, затем набираете get
Tab, и он добавит набор get. В этом нет ничего волшебного, но поскольку я все равно сначала набираю модификатор доступа, я могу закончить имя и тип.
В Visual Studio Community Edition 2015 вы можете выбрать все нужные поля и затем нажать Ctrl + . для автоматического создания свойств.
Вы должны выбрать, хотите ли вы использовать свойство вместо поля или нет.
В дополнение к фрагменту 'prop' и автоматическим свойствам существует опция рефакторинга, позволяющая выбрать существующее поле и раскрыть его через свойство ( щелкните правой кнопкой мыши поле Refactor Encapsulate Field ... < / а>).
Кроме того, если вам не нравится реализация prop, вы можете создавать свои собственные сниппеты. Кроме того, сторонний инструмент рефакторинга, например ReSharper, предоставит вам еще больше функций и сделает легче создавать более сложные сниппеты. Я бы порекомендовал ReSharper, если вы можете себе это позволить.
http://msdn.microsoft.com/en-us/library/f7d3wz0k(VS.80).aspx
Видео, демонстрирующее использование фрагмента 'prop' ( среди прочего), на 3 мин 23 сек.
На моем компьютере больше не установлена Visual Studio (и я использую Linux), но я помню, что где-то внутри одного из меню был спрятан мастер, который давал доступ к построителю классов.
С помощью этого мастера вы можете определить детали всех ваших классов, включая методы и атрибуты. Если я хорошо помню, была опция, с помощью которой вы могли попросить Visual Studio автоматически создать сеттеры и геттеры.
Я знаю, что это довольно расплывчато, но проверьте это, и вы можете это найти.
От имени инструмента Visual Studio мы можем легко сгенерировать свойства C # с помощью онлайн-инструмента под названием Генератор свойств C # .
Сначала получите расширение, просто нажмите (Ctrl + Shift + X) и установите установщик геттера ....
После этого просто выберите свою переменную и щелкните правой кнопкой мыши. Перейти к палитре команд ...
И введите getter ... Он предложит сгенерировать методы get и set. Нажмите на это ...
Просто нажмите Alt + Ins в Android Studio.
После объявления переменных вы получите геттеры и сеттеры в сгенерированном коде.