Pertanyaan internal vs publik di c #


Saya ingin tahu perbedaan antara public dan internal pengubah visibilitas.

Kapan sebaiknya kita gunakan internal di kelas dan kapan public? Saya bingung dengan kapan suatu metode seharusnya public atau internal.

Saya membaca itu internal dapat diakses melalui Majelis, sementara public juga dapat digunakan melalui perakitan di mana perbedaannya terletak.


76
2017-11-15 06:43


asal


Jawaban:


public terlihat dari mana saja.

internal hanya terlihat dalam sebuah majelis

Anda cenderung hanya menggunakan internal untuk melindungi API internal. Misalnya, Anda dapat mengekspos beberapa kelebihan metode:

public int Add(int x, int y)
public int Add(int x,int y, int z)

Keduanya memanggil metode internal

internal int Add(int[] numbers)

Anda kemudian dapat menempatkan banyak kecanggihan pada metode, tetapi "melindungi" menggunakan metode fasad yang dapat membantu programmer untuk memanggil metode dengan benar. (Metode implementasi dengan parameter larik mungkin memiliki batas nilai yang sewenang-wenang, misalnya.)

Juga perlu dicatat bahwa menggunakan Refleksi, setiap dan semua metode dapat dipanggil terlepas dari visibilitas mereka. "Peretasan" lain untuk mengontrol / mendapatkan akses ke API yang tersembunyi secara internal.


89
2017-11-15 06:47



internal berguna ketika Anda ingin menyatakan anggota atau ketik di dalam DLL, bukan di luar itu ...
biasanya, ketika Anda menyatakan anggota sebagai Public Anda dapat mengaksesnya dari DLL lain. tetapi, jika Anda perlu menyatakan sesuatu untuk dijadikan publik di dalam perpustakaan kelas Anda, Anda dapat menyatakannya sebagai Internal.
dalam defenisi formal: anggota internal terlihat hanya di dalam majelis saat ini ...


26
2017-11-15 06:47



internal juga berguna saat menulis tes unit. Itu InternalsVisibleTo atribut mari kita metode akses internal perakitan uji Anda dalam perakitan kode Anda. Yaitu. Anda dapat menguji metode yang tampak pribadi ke dunia luar tanpa menggunakan refleksi.


9
2017-11-15 07:19



Publik juga dapat diakses di luar sidang. Jadi, ketika Anda memiliki kelas yang tidak boleh diakses setiap kelas dalam perakitan harus dapat mengaksesnya, maka internal adalah hal yang benar. Jika Anda membutuhkan akses dari luar, gunakan publik.


5
2017-11-15 06:47



Juga, properti yang ditandai sebagai internal akan melempar a BindingExpression path error jika digunakan untuk DataBinding di WPF. Jadi itu harus public agar berfungsi dengan baik, bahkan ketika Pemancaran Data berlangsung dalam rakitan yang sama.


0
2018-01-03 13:57



Jika Anda dapat Merujuk kumpulan dari luar, Anda memiliki cakupan kelas internal dan publik


-2
2018-06-23 10:36