Bagaimana kita bisa menghasilkan getter dan setter di Visual Studio?


226

Dengan "menghasilkan", maksud saya pembuatan kode secara otomatis yang diperlukan untuk variabel (set) tertentu yang dipilih.

Tetapi setiap penjelasan atau komentar yang lebih eksplisit tentang praktik yang baik disambut baik.

Jawaban:



51

Visual Studio juga memiliki fitur yang akan menghasilkan Properti dari variabel pribadi.

Jika Anda klik kanan pada variabel, dalam menu konteks yang muncul, klik pada "Refactor" item, dan kemudian pilih Encapsulate Lapangan ... . Ini akan membuat properti pengambil / penyetel untuk variabel.

Saya tidak terlalu suka teknik ini karena agak canggung untuk digunakan jika Anda harus membuat banyak getter / setter, dan menempatkan properti langsung di bawah bidang pribadi, yang mengganggu saya, karena saya biasanya memiliki semua bidang pribadi saya dikelompokkan bersama, dan fitur Visual Studio ini memecah format kelas saya.


10
Sayangnya, opsi ini tidak diberikan oleh edisi ekspres Visual Studio.
Toby

12
ada shourtcut juga - Saya lebih suka cara ini :) - CTRL + R + E
Vukasin

32

Saya menggunakan Visual Studio 2013 Professional.

  • Tempatkan kursor Anda di baris variabel instan.

    Masukkan deskripsi gambar di sini

  • Tekan tombol kombinasi Ctrl+ R, Ctrl+ E, atau klik tombol mouse kanan. Pilih menu konteks RefactorEncapsulate Field ... , dan kemudian tekan OK.

    Masukkan deskripsi gambar di sini

  • Di Pratinjau Referensi Referensi - Dialog Bidang Enkapsulasi , tekan tombol Apply.

    Masukkan deskripsi gambar di sini

  • Ini hasilnya:

    Masukkan deskripsi gambar di sini



Anda juga menempatkan kursor untuk memilih properti . Gunakan menu EditRefactorEnkapsulasi Bidang ...


30

Dengan menghasilkan, maksud Anda menghasilkan otomatis? Jika bukan itu yang Anda maksud:

Visual Studio 2008 memiliki implementasi termudah untuk ini:

public PropertyType PropertyName { get; set; }

Di latar belakang, ini menciptakan variabel instance tersirat yang properti Anda disimpan dan diambil.

Namun jika Anda ingin memasukkan lebih banyak logika ke dalam Properti Anda, Anda harus memiliki variabel instan untuknya:

private PropertyType _property;

public PropertyType PropertyName
{
    get
    {
        //logic here 
        return _property;
    }
    set
    {
        //logic here
        _property = value;
    }
 }

Versi sebelumnya dari Visual Studio juga selalu menggunakan metode ini.


Bukankah standar dalam C # adalah tanda hubung lebih rendah setelah nama anggota dan property_bukan sebelumnya _property?
Julen

2
@ Julien - Saya selalu melihat konvensi _property.
Nathan DeWitt

27

Anda juga dapat menggunakan "propfull" dan menekan TABdua kali.

Variabel dan properti dengan get and set akan dihasilkan.


ini yang lebih bermanfaat dan saya selalu lupa
Dave Alperovich

Saya melakukan serialisasi XML dan memunculkan banyak properti di seluruh acara. + 100septillion upvotes jika saya bisa. Terima kasih! Edit- BAHKAN LEBIH BAIK, skrip autohotkey + ^ this = produktivitas lebih dari 90000!
Eon


6

Jika Anda menggunakan Visual Studio 2005 dan lebih tinggi, Anda bisa membuat setter / getter sangat cepat menggunakan perintah snippet insert.

Klik kanan pada kode Anda, klik Sisipkan Cuplikan ( Ctrl+ K, X), dan kemudian pilih "prop" dari daftar.


4

Jika Anda menggunakan ReSharper, buka menu ReSharper → KodeHasilkan ...

(Atau tekan Alt+ Insdi dalam kelas sekitarnya), dan Anda akan mendapatkan semua opsi untuk menghasilkan getter dan / atau setter yang dapat Anda pikirkan :-)


3

Gunakan propfullkata kunci.

Ini akan menghasilkan properti dan variabel.

Ketikkan kata kunci propfulldi editor, diikuti oleh dua TABs. Ini akan menghasilkan kode seperti:

private data_type var_name;

public data_type var_name1{ get;set;}

Video yang menunjukkan penggunaan 'propfull' cuplikan (antara lain), pada 4 menit 11 detik.


2
tolong berikan informasi lebih lanjut tentang jawaban Anda, jawaban dengan deskripsi singkat tidak oke untuk pengunjung berikutnya ...
Kiyarash

ketik kata kunci propfull di editor maka akan menghasilkan kode seperti private data_type var_name; public data_type var_name1 {get; set;}
avinash kadu

Bisakah Anda menambahkan referensi untuk "propfull" (dengan mengedit jawaban Anda , bukan di sini di komentar)?
Peter Mortensen

3

Saya membuat cuplikan saya sendiri yang hanya menambahkan {get; set;}. Saya membuatnya hanya karena saya menemukan propTabmenjadi kikuk.

<?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>

Dengan ini, Anda mengetik PropType dan PropName Anda secara manual, lalu ketik getTab, dan itu akan menambah get set. Tidak ada yang ajaib, tetapi karena saya cenderung mengetik pengubah akses saya terlebih dahulu, saya mungkin juga akan menyelesaikan nama dan jenisnya.


2

Dalam Visual Studio Community Edition 2015 Anda dapat memilih semua bidang yang Anda inginkan dan kemudian tekan Ctrl+ .untuk secara otomatis menghasilkan properti.

Anda harus memilih apakah Anda ingin menggunakan properti alih-alih bidang atau tidak.


1

Selain potongan 'prop' dan properti otomatis, ada opsi refactor untuk membiarkan Anda memilih bidang yang ada dan memaparkannya melalui properti ( klik kanan pada bidang → RefactorBidang Enkapsulasi ... ).

Juga, jika Anda tidak menyukai implementasi 'prop', Anda dapat membuat snippet Anda sendiri. Selain itu, alat refactoring pihak ketiga seperti ReSharper akan memberi Anda lebih banyak fitur dan membuatnya lebih mudah untuk membuat cuplikan yang lebih canggih. Saya akan merekomendasikan ReSharper jika Anda mampu membelinya.


Tautan pertama akan dialihkan ke dokumentasi Visual Studio 2005 Retired . Yang mana dari sepuluh yang dimaksud ? Agaknya, ini adalah deskripsi tentang cara menggunakan cuplikan di Visual Studio.
Peter Mortensen

1

Di studio visual 2019, pilih properti Anda seperti ini:

masukkan deskripsi gambar di sini

Lalu tekan Ctrl+r Kemudian tekanCtrl+e

Dialog akan muncul yang menunjukkan kepada Anda pratinjau perubahan yang akan dilakukan terhadap kode Anda. Jika semuanya terlihat baik (yang sebagian besar akan terjadi), tekan OK.


0

Saya tidak menginstal Visual Studio di komputer saya lagi (dan saya menggunakan Linux), tetapi saya ingat bahwa ada penyihir yang tersembunyi di suatu tempat di dalam salah satu menu yang memberikan akses ke pembuat kelas.

Dengan wizard ini, Anda dapat mendefinisikan semua detail kelas Anda, termasuk metode dan atribut. Jika saya ingat betul, ada opsi di mana Anda bisa meminta Visual Studio untuk membuat setter dan getter secara otomatis untuk Anda.

Saya tahu ini cukup samar, tapi coba lihat dan Anda mungkin menemukannya.



0

Pertama dapatkan Extension cukup tekan ( Ctrl+ Shift+ X) dan instal getter setter ....

Setelah ini, cukup pilih variabel Anda dan klik kanan. Buka palet perintah ...

Dan ketik pengambil ... Ini akan menyarankan menghasilkan dan mengatur metode. Klik ini ...


1
Apa yang Anda maksud dengan "Dapatkan Ekstensi Pertama" ?
Peter Mortensen

Dalam konteks apa Ctrl + Shift + X harus ditekan?
Peter Mortensen

-4

Anda cukup menekan Alt+ Insdi Android Studio.

Setelah mendeklarasikan variabel, Anda akan mendapatkan getter dan setter dalam kode yang dihasilkan.


Tidak ada yang bertanya tentang android studio
warzone_fz

Pertanyaannya adalah "Bagaimana kita bisa menghasilkan getter dan setter di Visual Studio?" . Visual Studio tidak sama dengan Android Studio .
Peter Mortensen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.