Как мы можем создавать геттеры и сеттеры в Visual Studio?

Под «генерацией» я подразумеваю автоматическое создание кода, необходимого для конкретной выбранной (набора) переменных.

Но любые более явные разъяснения или комментарии по поводу хорошей практики приветствуются.


person Paul    schedule 06.08.2008    source источник


Ответы (16)


Вместо использования Ctrl + K, X вы также можете просто набрать prop, а затем дважды нажать Tab.

person Orion Edwards    schedule 06.08.2008
comment
И не забывайте, что propg + tab генерирует то же самое, но с частным сеттером. - person Andrew M; 17.11.2009
comment
См. msdn.microsoft.com/en-us/library/z41h7fat.aspx для получения более полезных фрагментов кода в Visual C # - person Titus; 22.06.2015

В Visual Studio также есть функция, которая генерирует свойство из частной переменной.

Если щелкнуть переменную правой кнопкой мыши, во всплывающем контекстном меню щелкните элемент" Рефакторинг "и выберите Инкапсулировать поле .... Это создаст свойство получателя / установщика для переменной.

Я не слишком большой поклонник этой техники, так как ее немного неудобно использовать, если вам нужно создать много геттеров / сеттеров, и она помещает свойство непосредственно под частное поле, что меня беспокоит, потому что я обычно все мои частные поля сгруппированы вместе, и эта функция Visual Studio нарушает форматирование моего класса.

person Dan Herbert    schedule 06.08.2008
comment
К сожалению, в экспресс-выпусках Visual Studio такой возможности нет. - person Toby; 11.05.2012
comment
есть и shourtcut - я предпочитаю этот способ :) - CTRL + R + E - person Vukasin; 15.10.2013

Я использую Visual Studio 2013 Professional.

  • Поместите курсор в строку переменной экземпляра.

    Введите описание изображения здесь

  • Нажмите комбинированные клавиши Ctrl + R, Ctrl + E или щелкните правой кнопкой мыши. Выберите контекстное меню Рефакторинг Инкапсулировать поле ... и нажмите OK.

    Введите описание изображения здесь

  • В диалоговом окне Предварительный просмотр изменений ссылки - инкапсулировать поле нажмите кнопку Применить.

    Введите описание изображения здесь

  • Это результат:

    Введите описание изображения здесь



Вы также устанавливаете курсор для выбора свойства. Используйте меню Правка Рефакторинг Инкапсулировать поле ...

person Do Nhu Vy    schedule 28.04.2015

Вы имеете в виду автоматическое создание? Если вы не это имеете в виду:

В 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 всегда использовали этот метод от руки.

person Jon Limjap    schedule 06.08.2008
comment
Разве стандартом C # не является нижнее тире после имени члена property_ вместо перед _property? - person Julen; 30.03.2011
comment
@Julen - Я всегда видел соглашение _property. - person Nathan DeWitt; 20.11.2012

Вы также можете использовать "propfull" и дважды нажать TAB.

Переменная и свойство с get и set будут сгенерированы.

person Chirag Khatsuriya    schedule 17.07.2012
comment
это более полезный, и я всегда его забываю - person Dave Alperovich; 26.07.2013
comment
Я занимаюсь сериализацией XML и создаю массу свойств по всему шоу. + 100септиллионов голосов, если бы я мог. Спасибо! Edit- ДАЖЕ ЛУЧШЕ, скрипт autohotkey + ^ this = производительность более 90000! - person Eon; 21.07.2014
comment
Видео, демонстрирующее использование фрагмента 'propfull' ( среди прочего), на 4 мин 11 сек. - person Peter Mortensen; 09.12.2019

В Visual Studio 2019 выберите свои свойства следующим образом:

введите описание изображения здесь

Затем нажмите Ctrl+r Затем нажмите Ctrl+e

Появится диалоговое окно с предварительным просмотром изменений, которые произойдут с вашим кодом. Если все в порядке (а в большинстве случаев так и будет), нажмите OK.

person Adil Malik    schedule 25.12.2019
comment
Я думаю, что это должно быть установлено в качестве выбранного ответа, поскольку вопрос требует автоматического создания фрагмента кода для выбранного набора переменных. - person Erdem KAYA; 28.01.2021

Если вы используете Visual Studio 2005 и новее, вы можете очень быстро создать сеттер / получатель с помощью команды вставки фрагмента.

Щелкните код правой кнопкой мыши, выберите Вставить фрагмент (Ctrl + K, X), а затем выберите " опора »из списка.

person omar    schedule 06.08.2008

Если вы используете ReSharper, перейдите в меню ReSharper Код Создать ...

(Или нажмите Alt + Ins внутри окружающего класса), и вы получите все варианты создания геттеров и / или сеттеров, о которых вы только можете подумать :-)

person Oliver    schedule 28.09.2009

Используйте ключевое слово propfull.

Он сгенерирует свойство и переменную.

Введите ключевое слово propfull в редакторе, а затем две клавиши TAB. Он сгенерирует такой код:

private data_type var_name;

public data_type var_name1{ get;set;}

Видео, демонстрирующее использование фрагмента 'propfull' ( среди прочего), при 4 мин 11 сек.

person avinash kadu    schedule 25.09.2014
comment
пожалуйста, предоставьте дополнительную информацию о своем ответе, ответы с кратким описанием не подходят для следующих посетителей ... - person Kiyarash; 25.09.2014
comment
введите ключевое слово propfull в редакторе, он сгенерирует код вроде private data_type var_name; общедоступные данные_типа var_name1 {get; set;} - person avinash kadu; 29.09.2014
comment
Можете ли вы добавить ссылку на propfull (отредактировав свой ответ, а не здесь, в комментариях)? - person Peter Mortensen; 09.12.2019

Я создал свой собственный фрагмент, который только добавляет {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. В этом нет ничего волшебного, но поскольку я все равно сначала набираю модификатор доступа, я могу закончить имя и тип.

person bsayegh    schedule 25.03.2015

В Visual Studio Community Edition 2015 вы можете выбрать все нужные поля и затем нажать Ctrl + . для автоматического создания свойств.

Вы должны выбрать, хотите ли вы использовать свойство вместо поля или нет.

person Tito Leiva    schedule 06.01.2017

В дополнение к фрагменту 'prop' и автоматическим свойствам существует опция рефакторинга, позволяющая выбрать существующее поле и раскрыть его через свойство ( щелкните правой кнопкой мыши поле Refactor Encapsulate Field ... < / а>).

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

person Daniel    schedule 12.01.2009
comment
Первая ссылка перенаправляет на устаревшую документацию Visual Studio 2005 < / а>. К какому из десяти он относится? Предположительно, это описание того, как использовать сниппеты в Visual Studio. - person Peter Mortensen; 09.12.2019

На моем компьютере больше не установлена ​​Visual Studio (и я использую Linux), но я помню, что где-то внутри одного из меню был спрятан мастер, который давал доступ к построителю классов.

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

Я знаю, что это довольно расплывчато, но проверьте это, и вы можете это найти.

person Mario Marinato    schedule 06.08.2008

Введите здесь описание изображения

От имени инструмента Visual Studio мы можем легко сгенерировать свойства C # с помощью онлайн-инструмента под названием Генератор свойств C # .

person DotNetLover    schedule 14.08.2017
comment
бесполезная особенность - person SeReGa; 12.12.2018

Сначала получите расширение, просто нажмите (Ctrl + Shift + X) и установите установщик геттера ....

После этого просто выберите свою переменную и щелкните правой кнопкой мыши. Перейти к палитре команд ...

И введите getter ... Он предложит сгенерировать методы get и set. Нажмите на это ...

person Sejpalsinh Jadeja    schedule 17.12.2018
comment
Что вы подразумеваете под первым получите расширение? - person Peter Mortensen; 09.12.2019
comment
В каком контексте следует нажимать Ctrl + Shift + X? - person Peter Mortensen; 09.12.2019

Просто нажмите Alt + Ins в Android Studio.

После объявления переменных вы получите геттеры и сеттеры в сгенерированном коде.

person A_R Rehman    schedule 28.11.2017
comment
Никто не спросил про андроид-студию - person warzone_fz; 10.12.2018
comment
Возникает вопрос: Как мы можем создавать геттеры и сеттеры в Visual Studio?. Visual Studio - это не то же самое, что Android Studio. - person Peter Mortensen; 09.12.2019