|
|
Diposting pada 07/07/2016 10.15.06
|
|
|

dinamis adalah fitur baru dari FrameWork 4.0. Munculnya dinamika telah memberi C# karakteristik tipe bahasa yang lemah. Kompiler tidak lagi memeriksa jenis pada waktu kompilasi, dan objek dinamis mendukung fitur apa pun yang Anda inginkan secara default selama waktu kompilasi. Misalnya, meskipun Anda tidak tahu apa-apa tentang objek yang dikembalikan oleh metode GetDynamicObject, Anda dapat melakukan panggilan kode seperti ini, dan pengkompilasi tidak akan melaporkan kesalahan:
Ketika datang ke penggunaan yang benar, maka satu penggunaan yang salah harus ditunjukkan terlebih dahulu:
Orang sering menggunakan kata kunci var untuk membandingkan dengan dinamis. Faktanya, var dan dinamis benar-benar dua konsep dan tidak boleh dibandingkan sama sekali. Setelah dikompilasi, waktu kompilasi secara otomatis cocok dengan jenis aktual variabel var dan mengganti deklarasi variabel dengan jenis aktual, yang terlihat seolah-olah kita mendeklarasikan jenis aktual saat mengkode. Setelah dinamis dikompilasi, sebenarnya itu adalah jenis objek, tetapi kompiler akan membuat perlakuan khusus pada tipe dinamis, sehingga tidak melakukan pemeriksaan jenis apa pun selama kompilasi, tetapi menempatkan pemeriksaan jenis dalam runtime.
Ini dapat dilihat di jendela editor di Visual Studio. Variabel yang dideklarasikan sebagai var mendukung "intelligent sense" karena Visual Studio dapat menyimpulkan jenis jenis var yang sebenarnya, sedangkan variabel yang dinyatakan sebagai dinamis tidak mendukung "intelligent sense" karena pengkompilasi tidak tahu apa-apa tentang jenis runtime-nya. Menggunakan Intelligent Sense untuk variabel dinamis meminta "Tindakan ini akan diselesaikan saat runtime".
Fakta bahwa variabel dinamis adalah variabel objek dapat diverifikasi oleh kode IL, dan kode IL tidak akan diposting di sini. Tentu saja, kompiler juga menangani deklarasi dinamis untuk membedakan antara variabel objek langsung.
dinamika secara luas ditampilkan di MSDN untuk menyederhanakan interoperabilitas, dan saya merasa bahwa berdasarkan hal inilah beberapa pengembang disalahpahami: karena banyak pengembang tidak tahu cara menggunakan pengkodean seperti pengembangan sekunder COM+ dan OFFICE, mereka sangat membutuhkan alasan aplikasi yang dinamis. Jadi, dalam pengembangan sehari-hari, menurut saya dinamika sangat berharga:
Konversi jenis Transisi antara instans tipe Dinamis dan jenis instans lainnya sederhana, dan pengembang dapat dengan mudah beralih antara perilaku dinamis dan non-dinamis. Instans apa pun dapat dikonversi secara implisit menjadi instans tipe dinamis, lihat contoh berikut: dinamis d1 = 7; dinamis d2 = "string"; dinamis d3 = System.DateTime.Today; dinamis d4 = System.Diagnostics.Process.GetProcesses(); Sebaliknya, konversi implisit dapat diterapkan secara dinamis ke ekspresi jenis dinamis apa pun. Dan sebaliknya, ekspresi dinamis tipe apa pun juga dapat dikonversi secara implisit ke jenis lain. int i = d1; string str = d2; TanggalWaktu dt = d3; System.Diagnostics.Process[] procs = d4; Masalah kelebihan beban dengan parameter tipe dinamis dalam metode Jika metode dipanggil melewati objek jenis dinamis, atau objek yang dipanggil adalah jenis dinamis, maka penilaian kelebihan beban terjadi pada runtime dan bukan pada waktu kompilasi. DLR runtime bahasa dinamis Runtime bahasa dinamis adalah . NET Framework 4 Beta 1 adalah serangkaian API baru yang memberikan dukungan untuk jenis dinamis di C# dan juga mengimplementasikan bahasa pemrograman dinamis seperti IronPython dan IronRuby. Dinamis menyederhanakan refleksi.
Sebelumnya kami menggunakan refleksi seperti ini:
Sekarang kita memiliki cara yang disederhanakan untuk menulis:
Kita mungkin meremehkan penyederhanaan seperti itu, lagipula, tampaknya kode tersebut belum banyak dikurangi, tetapi jika kita memperhitungkan dua karakteristik efisiensi dan keindahan, maka keuntungan dari dinamis sudah jelas. Kompiler mengoptimalkan dinamis agar jauh lebih cepat daripada efisiensi refleksi yang tidak di-cache. Jika Anda harus membandingkan, Anda dapat menjalankan kode dari dua di atas (bagian metode panggilan Tambahkan) untuk 1000000 untuk menarik kesimpulan.
|
Mantan:mvc mengambil data XML JSON untuk postinganDepan:Terjadi kesalahan pengenalan. dekat baris 1, kolom 10
|