Pertanyaan Apa perbedaan mendasar antara Java dan C # dalam hal kelas internal / lokal / anonim?


Apa perbedaan mendasar antara Java dan C # dalam hal kelas dalam / lokal / anonim?


5
2018-03-26 14:52


asal


Jawaban:


C # tidak memiliki padanan kelas-kelas dalam Jawa - ia hanya memiliki tipe bertingkat (seperti kelas-kelas bertingkat "statis" Java).

Aturan akses sedikit berbeda - di Jawa, kelas luar memiliki akses ke anggota pribadi kelas bertingkat, dan sebaliknya. Di C # kelas bertingkat memiliki akses ke anggota pribadi luar kelas, tetapi tidak sebaliknya.

C # tidak memiliki kelas internal anonim seperti Java, tetapi itu tidak memiliki metode anonim dan ekspresi lambda, yang merupakan cara yang lebih bersih untuk dicapai paling dari apa kelas batin anonim biasanya digunakan untuk. Penangkapan variabel untuk dua mekanisme berbeda - lihat artikel saya tentang penutupan untuk lebih jelasnya.


8
2018-03-26 14:53



Dalam pikiran saya, perbedaan terbesar adalah bagaimana mereka (kelas anonim di java vs metode anonim dalam C #) menangani menangkap. Di java, ia menangkap arus nilai dari variabel (nilai asli dan ditangkap kemudian diisolasi). Dalam C #, Anda menangkap variabel itu sendiri. Ini bermata dua, dan dapat menyebabkan masalah - tetapi sangat kuat ketika digunakan dengan benar.


2