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


259

Я бачив, як люди дуже швидко створюють властивості в C #, але як вони це зробили?

Які ярлики доступні у Visual Studio (зараз використовується Visual Studio 2010) для створення властивостей?

Я використовую C #.

Наприклад,

public string myString {get;set;}

Відповіді:


561

Ви можете набрати " опору ", а потім двічі натиснути вкладку. Це призведе до наступного.

public TYPE Type { get; set; }

Потім ви змінюєте "TYPE" і "Type":

public string myString {get; set;}

Ви також можете отримати повну властивість, набравши "профул", а потім двічі на вкладці. Це створило б поле та повну властивість.

private int myVar;

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

7
Ви забули назвати його "
Сніппетом

@PVitt: Спасибі, я не знав імені :-)
Амра

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 і показує вам повний список доступних фрагментів.

Крім того, пам'ятайте , що ви можете налаштувати свої власні фрагменти за допомогою Snippets Manager, який доступний в 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.
Амра

1
Я тебе люблю! шукали цього вже деякий час
SageMage

24

Помістіть курсор у своє поле, private int _i;а потім меню Редагування або RMB - Refactor - Encapsulate Field ... ( CtrlR, CtrlE) для створення стандартних аксесуарів властивості.


1
Не всі використовують однакову розкладку клавіатури (не кажучи вже про ReSharper та ін.). Може бути добре додати, де ви можете знайти цю саму функціональність у меню.
sliderhouserules

11

Введіть "пропіл". Це набагато краще використовувати, і він буде генерувати властивість та приватну змінну.

Введіть "пропіл", а потім 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. випускалися різні варіанти рефакторингу коду. Потрібно використовувати новішу версію.
Emrah Esmeroğlu

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 # дуже швидко. У багатьох випадках використання цього безумовно, це місце, де у вас є приватне поле, і ви хочете уникати цього робити публічним полем (це мій випадок). Якщо у мене є записані мої приватні поля та я хочу повністю загальнодоступні властивості якнайшвидше, я думаю, що це прекрасно відповідає на це питання в цьому великому наборі випадків. Симплекс.
Буде Кроксфорд


2

Йти до

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

У розділі поведінки "Сніппети":

Переконайтесь, що вибрано "Завжди включати фрагменти".

Я сподіваюся, що це працює і для вас.




0

Використання VsVim фрагменти коду, здається, працюють трохи смішно. Я шукав ярлик, коли я опинився тут, набагато простіше: після типу імені члена{g;s;

У мене ввімкнено автоматичне закривання роздільника, тому фіксується фіксатор { , а введення крапки з комою запускає автозаповнення для get і set.

Він працює на 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

В кінці рядка (після рядка) Натисніть, переконайтеся, що ви поставили _ (підкреслення) на початку, оскільки він додасть номер у кінці властивості:

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.