Saya tidak akan menganggapnya sebagai duplikat ... pertanyaan itu spesifik (Apa default untuk INI?), Yang ini luas (Apa SEMUA default?)
WernerCD
Jawaban:
266
Semua informasi yang Anda cari dapat ditemukan di sini dan di sini (terima kasih Reed Copsey ):
Dari tautan pertama:
Kelas dan struct yang dideklarasikan secara langsung di dalam namespace (dengan kata lain, yang tidak bersarang di dalam kelas atau struct lainnya) dapat berupa publik atau internal. Internal adalah default jika tidak ada pengubah akses yang ditentukan .
...
Tingkat akses untuk anggota kelas dan anggota struct , termasuk kelas dan struct yang bersarang, bersifat pribadi secara default .
...
antarmuka standar untuk akses internal .
...
Delegasi berperilaku seperti kelas dan struct. Secara default, mereka memiliki akses internal ketika dideklarasikan secara langsung dalam namespace, dan akses pribadi saat bersarang .
Dari tautan kedua:
Tipe tingkat atas , yang tidak bersarang di tipe lain, hanya dapat memiliki aksesibilitas internal atau publik. The aksesibilitas default untuk jenis internal .
Dan untuk tipe bersarang:
Anggota aksesibilitas anggota Default
---------- ----------------------------
enum publik
kelas pribadi
antarmuka publik
struct pribadi
Kompilasi yang bagus dari info Reed, tetapi Anda lupa menentukan bahwa pengubah akses seperti itu juga berlaku untuk metode.
Joel
4
@ Joel Apa maksudmu? Dia jelas menyatakan "anggota". Anggota menjadi data dan perilaku dan dengan demikian termasuk metode.
rism
Jika ada pengembang vb.net melihat ini, vb berbeda. Cakupan default untuk anggota kelas vb adalah Public. Enumanggota juga Public. Mungkin kurang membingungkan untuk hanya menggunakan ruang lingkup eksplisit dalam kasus Anda karena kemungkinan tinggi akan diterjemahkan atau dibaca oleh pengembang c # di beberapa titik. Sayangnya, pembuatan kode di vb.net tidak melakukan ini untuk Anda.
toddmo
Saya akan menambahkan bahwa antarmuka bersarang dalam kelas bersifat pribadi, bukan internal, secara default.
Frank Bryce
13
Dari MSDN:
Tipe tingkat atas , yang tidak bersarang di tipe lain, hanya dapat memiliki internalatau publicaksesibilitas. Aksesibilitas default untuk jenis ini adalah internal.
Tipe bersarang , yang merupakan anggota dari tipe lain, dapat menyatakan aksesibilitas seperti yang ditunjukkan pada tabel berikut.
Secara default, pengubah akses untuk kelas adalah internal. Itu berarti mengatakan, kelas dapat diakses dalam majelis yang sama. Tetapi jika kita ingin kelas diakses dari majelis lain maka itu harus dipublikasikan.
Informasi ini sudah ada di jawaban lain. Anda seharusnya hanya menjawab pertanyaan, terutama yang lama seperti ini, ketika Anda memiliki informasi tambahan untuk diberikan atau Anda berpikir bahwa jawaban yang lain salah. Bagaimanapun, selamat datang di Stack Overflow.
Gorpik
Kelas tidak harus dibuat publik agar dapat diakses oleh majelis lain. Seseorang dapat menggunakan Kelas InternalsVisibleToAttribute[assembly:InternalsVisibleTo("Friend1b")]
adam
0
Secara default adalah private. Kecuali mereka bersarang, kelasnya internal.
@ Jay: Kecuali mereka bersarang. @Ryan: Tidak, enum yang tidak bersarang adalah internal secara default.
Jon Skeet
2
@Ryan: Anggota Enum bersifat publik secara default, tetapi enum itu sendiri internal.
Reed Copsey
@ReedCopsey Tapi buku yang saya pelajari dengan jelas mengatakan itu enum members are private by default, so to use them outside the enum we should declare them as public. Bisakah Anda jelaskan mengapa buku itu bertentangan dengan apa yang Anda katakan? Terima kasih.
Buku apa pun yang dibaca @ user5794376 (jelas-jelas akun yang dihapus) harus diberikan semua ulasan 1 bintang jika apa yang mereka katakan dalam buku itu benar. Hanya perlu melihat Microsoft Documents untuk mengetahui bahwa anggota enum adalah publik secara default dan itulah mengapa itu adalah praktik umum untuk enums hanya untuk tidak eksplisit pada mereka.
Jawaban:
Semua informasi yang Anda cari dapat ditemukan di sini dan di sini (terima kasih Reed Copsey ):
Dari tautan pertama:
...
...
...
Dari tautan kedua:
Dan untuk tipe bersarang:
sumber
Public
.Enum
anggota jugaPublic
. Mungkin kurang membingungkan untuk hanya menggunakan ruang lingkup eksplisit dalam kasus Anda karena kemungkinan tinggi akan diterjemahkan atau dibaca oleh pengembang c # di beberapa titik. Sayangnya, pembuatan kode di vb.net tidak melakukan ini untuk Anda.Dari MSDN:
Tipe tingkat atas , yang tidak bersarang di tipe lain, hanya dapat memiliki
internal
ataupublic
aksesibilitas. Aksesibilitas default untuk jenis ini adalahinternal
.Tipe bersarang , yang merupakan anggota dari tipe lain, dapat menyatakan aksesibilitas seperti yang ditunjukkan pada tabel berikut.
Sumber: Tingkat aksesibilitas (C # Referensi) (6 Desember th 2017)
sumber
Secara default, pengubah akses untuk kelas adalah
internal
. Itu berarti mengatakan, kelas dapat diakses dalam majelis yang sama. Tetapi jika kita ingin kelas diakses dari majelis lain maka itu harus dipublikasikan.sumber
[assembly:InternalsVisibleTo("Friend1b")]
Secara default adalah
private
. Kecuali mereka bersarang, kelasnyainternal
.sumber
enum members are private by default, so to use them outside the enum we should declare them as public
. Bisakah Anda jelaskan mengapa buku itu bertentangan dengan apa yang Anda katakan? Terima kasih.