Penggunaan kata kunci "Menggunakan" di antarmuka C #

16

Ketika saya menggunakan C # untuk menulis beberapa kode dan saya mendefinisikan antarmuka menggunakan Visual Studio 2010, selalu menyertakan sejumlah pernyataan "menggunakan" (seperti yang ditunjukkan dalam contoh)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestEngine.TestNameSpace
{
    interface ITest1
    {
        bool testMethod(int xyz);
    }
} 

Saya ingin tahu untuk apa ini dan apakah itu benar-benar diperlukan. Bisakah saya tinggalkan ini? Apakah mereka hanya diperlukan ketika saya menggunakan bagian-bagian itu dalam deskripsi antarmuka saya?

Onno
sumber
thnx untuk edit. Saya baru saja menemukan jawabannya sendiri. entah bagaimana pernyataan menggunakan ditinggalkan meskipun saya telah memilih mereka di blok kode :)
Onno
2
Baca juga stackoverflow.com/a/151560/240613 : dalam kode Anda, usings berada di tempat yang salah.
Arseni Mourzenko
1
Terima kasih untuk tautannya, ini merupakan tambahan yang bagus. Setelah jawaban oleh @Akshat Jiwan Sharma menjadi jelas bahwa ini memang benar, tetapi pada saat yang sama pertanyaannya berkaitan dengan template / pengaturan default yang disediakan oleh MS ketika Anda menginstal VS2010.
Onno
1
@MainMa - ini adalah tempat Visual Studio menempatkan usingsdalam templat default, jadi kecuali Microsoft memperbarui mereka dalam waktu dekat pertanyaan ini valid.
ChrisF
1
@ Madhat: Benar, tapi saya pikir itu jelas apa yang ditanyakan ketika seseorang membaca pertanyaan itu sendiri. Jangan ragu untuk mengedit judul jika Anda bisa memikirkan yang lebih baik.
Onno

Jawaban:

49

Visual Studio tidak tahu kode apa yang ingin Anda tulis, jadi sertakan ruang nama paling umum untuk Anda secara default di templat "kelas baru". Ini dilakukan agar Anda tidak harus menyelesaikan semua referensi untuk setiap baris kode baru yang Anda tulis.

Setelah Anda menulis kode dasar Anda jika Anda mengklik kanan dan pilih Organize Usings> Remove dan Sortir akan menghapus semua yang tidak digunakan.

ChrisF
sumber
2
Juga, jika Anda menghapus baris "menggunakan" karena kesalahan, Anda dapat menambahkannya kembali dengan masuk ke nama kelas yang sekarang tidak dapat ditemukan dan klik kanan -> Selesaikan -> Menggunakan ...
Mr Lister
10
@ Tuanister: Jika Anda belum tahu ini: tekan "ctrl +." (periode kontrol) ketika kursor Anda berada pada jenis atau kelas yang tidak terselesaikan dan Anda mendapatkan efek yang sama tanpa harus menyentuh mouse.
Steven Evers
3
Juga sebagai tambahan untuk jawaban: "usings" yang tidak digunakan tidak akan memengaruhi runtime kode Anda, karena hanya "usings" yang digunakan akan dimuat. Namun mereka dapat mempengaruhi IDE dan kecepatan kompilasi: stackoverflow.com/questions/136278/…
Holger
Karena ini adalah jawaban yang diterima, saya ingin menyebutkan bahwa StyleCop akan mengeluh tentang referensi yang berada di tempat yang salah dan juga orang dapat mengedit templat untuk kelas baru dan antarmuka baru, dll.
Ayub
5

Ya, Anda dapat menghapus arahan yang tidak digunakan. Arahan ini secara otomatis ditambahkan oleh studio visual karena itu adalah yang paling umum digunakan dan jika misalnya Anda tidak akan menggunakan linq di antarmuka maka Anda dapat menghapus arahan

 System.Linq;

Hal yang sama berlaku untuk arahan lain juga. Juga merupakan praktik yang baik menurut pendapat saya untuk memindahkan arahan penggunaan di dalam ruang nama.

Akshat Jiwan Sharma
sumber
Senang membantu pertanyaan yang Anda tanyakan membingungkan saya untuk waktu yang lama juga. :)
Akshat Jiwan Sharma
Seseorang dapat mengedit file template dan menyesuaikan pernyataan mana yang dimasukkan dan di mana - mereka harus masuk ke dalam namespace secara default atau StyleCop akan mengeluh, dan bahkan lebih buruk lagi - hal-hal buruk dapat terjadi.
Ayub
3

usingPernyataan default ini adalah bagian dari templat default Anda saat membuat antarmuka. Anda selalu dapat mengedit templat untuk menghapusnya. Lihat pertanyaan ini untuk lebih jelasnya.

Bernard
sumber
Tetapi apakah itu benar-benar perlu? Apakah ada alasan bagus bagi mereka untuk ada dalam templat?
Onno
Jika Anda tidak membutuhkannya, hapus saja. Itu hanya default.
Bernard
Mereka hanya diperlukan jika salah satu metode antarmuka Anda adalah tipe pengembalian yang terletak di salah satunya. Anda memerlukan Sistem minimal, dan yang lainnya hanya sesuai kebutuhan untuk jenis yang ingin Anda kembalikan.
Graham
Sebenarnya, banyak kelas tidak membutuhkan sistem. Tetapi semuanya itu membuat hidup lebih mudah pada kebanyakan pengembang, terutama yang tidak terbiasa dengan .NET dan tidak tahu di mana mengambil kelas sistem utama.
Wyatt Barnett
0

Singkatnya , mereka disebut ruang nama . Ruang nama juga digunakan untuk referensi beberapa kelas pustaka dalam kode Anda. Ada juga pedoman yang disarankan pada cara menggunakan ruang nama di .NET

Dalam kebanyakan kasus, Anda dapat menghapusnya jika tidak digunakan. Dua ruang nama berikut ini adalah kandidat potensial untuk dihapus.

using System.Collections.Generic;
using System.Linq;

Visual Studio akan mengeluh dan TIDAK mengkompilasi kode, setelah beberapa kelas kerangka / pustaka telah digunakan tanpa mendeklarasikan ruang nama mereka. Dengan demikian, roll namespace bermain struktur kode Anda serta memudahkan referensi antara kelas proyek, antarmuka, konstruksi, dll.

Yusubov
sumber
-1

menggunakan dalam C # digunakan untuk banyak cara .. sebagai kata kunci menggunakan kata berarti menggunakan .. saat mulai ketika kami menggunakan sistem; itu berarti ada DLL Sistem nama di mana semua fungsi utama disimpan dan kami menggunakannya untuk mempersingkat kode kami ...

system.WriteLine("Andy");

tetapi ketika kita menggunakan sistem di atas maka kita dapat menuliskannya sebagai

WriteLine("Andy");

apalagi di SQLserver ketika kita menggunakan koneksi itu artinya setelah kita menggunakan data dari database dengan menggunakan koneksi perintah itu sendiri akan menutup. ini sangat berguna untuk seorang programmer yang ingin menghemat waktu

andysmart001
sumber
1
Harap jangan mencoba menambahkan tautan yang tidak perlu (dan berpotensi spam) ke jawaban Anda.
ChrisF