Ярлык для создания свойств в Visual Studio?


260

Я видел, как некоторые люди очень быстро создавали свойства в C #, но как они это делали?

Какие ярлыки доступны в Visual Studio (в настоящее время используется Visual Studio 2010) для создания свойств?

Я использую C #.

Например,

public string myString {get;set;}

Ответы:


561

Вы можете набрать « prop » и затем дважды нажать «tab». Это создаст следующее.

public TYPE Type { get; set; }

Затем вы меняете «ТИП» и «Тип»:

public string myString {get; set;}

Вы также можете получить полное свойство, набрав «propfull», а затем дважды нажать клавишу «Tab». Это будет генерировать поле и полное свойство.

private int myVar;

public int MyProperty
{
    get { return myVar;}
    set { myVar = value;}
}

7
Вы забыли назвать его «Code Snippet» :)
PVitt

@PVitt: Спасибо, я не знал названия :-)
Amra

12
Кроме того, propg создаст: public int MyProperty {get; приватный набор; }
Amc_rtty

3
Вы можете также отредактировать фрагмент кода, в папке VC # \ Snippets \ 1033 \ Visual C # \»под вашей Visual Studio установки Я отредактировал мой propfull.snippet , чтобы сделать подкладочный поле. protectedВместо private, например.
Paul Smith

9
Если вы просто дважды наберете P и TAB, это также создаст свойство int.
Аднан Бхатти

78

В дополнение к ответу Амры , вы можете найти другие фрагменты, набрав

Ctrl+ K, Ctrl+X

Который сопоставлен с Edit.InsertSnippet в моей Visual Studio и показывает вам полный список доступных фрагментов.

Также помните, что вы можете настроить свои собственные фрагменты с помощью диспетчера фрагментов, который доступен в Toolsменю Code Snippets Manager.... По сути, вы создаете файл *.snippetи используете кнопку «Импорт» в диспетчере фрагментов кода, чтобы добавить его в Visual Studio. Для полного урока вы можете перейти к документации; Пошаговое руководство. Создание фрагмента кода .


В Visual Studio фрагменты кода обрабатываются немного иначе, чем в Visual Studio. Вы можете получить доступ ко всем фрагментам, набрав Ctrl+ Shift+ Pи введите snippet. Два варианта должны быть доступны, Insert Snippetи Preferences: Configure User Snippets.

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

Если вы знаете короткое имя, вы можете просто ввести его и использовать Tabдля расширения фрагмента. Для вставки # свойства C у вас есть три фрагменты доступны, prop, propfullи propg, для различных целей.


Хорошо, что это медленнее, но вы получите полный список коротких путей +1.
Amra

1
Я тебя люблю! искал это некоторое время сейчас
SageMage

24

Поместите курсор в поле, private int _i;а затем в меню «Правка» или «RMB - Refactor - Encapsulate Field ...» ( CtrlR, CtrlE), чтобы создать стандартные средства доступа к свойствам.


1
Не все используют одинаковую раскладку клавиатуры (не говоря уже о ReSharper и др.). Возможно, было бы неплохо добавить, где вы можете найти такую ​​же функциональность в меню.
Sliderhouserules

11

Типа "propfull". Гораздо лучше использовать, и он сгенерирует свойство и приватную переменную.

Типа "propfull", а затем TABдважды.


1
Почему полные свойства лучше, чем автоматические свойства? Зачем загромождать свой код дополнительным полем?
Кайл Делани

1
В случае, если вам нужно сделать что-то в сеттер или геттер.
Джо

8

После ввода «prop» + Tab+, Tabкак предлагает Amra, вы можете сразу же ввести тип свойства (который заменит значение по умолчанию int), ввести другую вкладку и ввести имя свойства (которое заменит MyProperty по умолчанию). Готово, нажав Enter.


6

Я думаю, Alt+ R+ Fявляется правильным для создания свойства из объявления переменной


2
+1 Это на самом деле то, что я искал, так как он создает свойства для существующих переменных, спасибо!
AgentKnopf

1
хм .. это минимизация файлов для меня. Это не работает как задумано для меня на VS2012
Аммар

6

Начинать с:

private int myVar;

Когда вы выбираете «myVar» и щелкните правой кнопкой мыши, затем выберите «Refactor» и выберите «Encapsulate Field».

Это автоматически создаст:

{
    get { return myVar; }
    set { myVar = value; }
}

Или вы можете сократить его, нажав Ctrl+ R+ E.


Какая версия Visual Studio? Похоже, что это не в Visual Studio 2008.
Питер Мортенсен

Различные варианты рефакторинга кода пришли с VS 2010. Вы должны использовать более новую версию.
Эмра Эсмероглу

3

Когда вы пишете в Visual Studio,

public ServiceTypesEnum Type { get; set; }
public string TypeString { get { return this.Type.ToString();}}

ReSharper будет продолжать предлагать преобразовать его в:

public string TypeString => Type.ToString();

Но я думаю, что первое более читабельно, чем то, что предлагает ReSharper
Махди Алхатиб

3
Как это отвечает на вопрос?
Питер Мортенсен

3

В IDE мне понравилось то, что я мог написать несколько переменных, таких как:

    private int id;
    private string name;
    private string version;
    private string description;
    private string status;
    private string symbol;

Обратите внимание, что имена переменных начинаются с маленьких букв, затем выберите весь блок и нажмите Ctrl+ R, Ctrl+ E, Применить. Свойства генерируются с заглавной буквы:

    public int Id
    {
        get
        {
            return id;
        }

        set
        {
            id = value;
        }
    }

и т.п.


Это на самом деле не отвечает на вопрос, не так ли?
mrun

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

Это был своего рода ярлык, который я искал и попал на эту страницу. Первоначальный вопрос - как быстро создать свойства в C #. Во многих случаях использования в этом случае, безусловно, это будет то, где у вас есть личное поле и вы хотите не делать это публичным полем (это мой случай). Если у меня написано личное поле (поля), и я хочу, чтобы все публичные свойства были как можно быстрее, я думаю, что это ответ на вопрос отлично в этом большом подмножестве случаев. Simples.
Уилл Кроксфорд


2

Перейти к

Инструменты >> Параметры >> Текстовый редактор >> C # >> IntelliSense

Под разделом поведения Snippets:

Убедитесь, что выбрано «Всегда включать фрагменты».

Я надеюсь, что это работает и для вас.




0

При использовании VsVim фрагменты кода выглядят немного забавно. Ярлык, который я искал, когда попал сюда, гораздо проще: после типа имени члена{g;s;

У меня включено автоматическое закрытие разделителя, поэтому появляется закрывающая скобка {, и ввод точки с запятой вызывает автозаполнение для получения и установки.

Он работает на VS2013 и VS2015, а на VS2012 просто отсутствует автоматическое сопоставление скобок.



0

В C #:

private string studentName;

В конце строки после точки с запятой (;) Просто нажмите

Ctrl + R + E

Появится всплывающее окно, подобное этому: введите описание изображения здесь При нажатии кнопки «Применить» или нажатии клавиши «ENTER» будет сгенерирован следующий код свойства:

public string StudentName
        {
            get
            {
                return studentName;
            }

            set
            {
                studentName = value;
            }
        }

В VB:

Private _studentName As String

В конце строки (после String) нажмите, убедитесь , что вы ставите _ (подчеркивание) в начале, потому что это добавит число в конце свойства:

Ctrl + R + E

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

При нажатии кнопки «Применить» или нажатии клавиши «ENTER» будет сгенерирован следующий код свойства с номером в конце, например:

Public Property StudentName As String
        Get
            Return _studentName
        End Get
        Set(value As String)
            _studentName = value
        End Set
    End Property

С числами свойства выглядят так:

Private studentName As String
 Public Property StudentName1 As String
        Get
            Return studentName
        End Get
        Set(value As String)
            studentName = value
        End Set
    End Property
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.