Garis Panduan Komprehensif untuk Kata Kunci dan Penukaran Paksa as
Semasa pembangunan antara muka, penukaran jenis dan penukaran objek adalah tugas yang sama. Dalam C#, kami mempunyai dua kaedah untuk mencapai penukaran ini: penukaran paksa dan
as
penukaran paksa
Penukaran mandatori merujuk kepada mengubah satu objek dari satu jenis ke yang lain. Ini boleh dicapai melalui tatabahasa , di mana menunjukkan jenis data yang diperlukan,
adalah pembolehubah yang kita mahu tukar. Contohnya:
(目标类型)对象
Kod ini dipaksa untuk menukar objek yang disimpan dalam 目标类型
ke 对象
dan menyerahkannya kepada pembolehubah
_myCls1 = (MyClass)_MyObj;
akan dibuang. _MyObj
MyClass
_myCls1
<<> Kata kunci _myCls1
MyClass
InvalidCastException
Tidak seperti penukaran mandatori,
. Ini mengelakkan risiko yang tidak normal dan membolehkan menulis kod keselamatan udara.
as
Dalam kod ini, jika penukaran dari
berjaya, pembolehubah as
akan merujuk objek penukaran. Jika penukaran gagal, <被> akan diberikan kepada null
. Apabila kami mengharapkan penukaran gagal dan ingin mengendalikan nilai
_myCls2 = (_MyObj as MyClass);
kesan prestasi _MyObj
MyClass
_myCls2
Dari segi prestasi, pengkompil Modern Instan (JIT) akan mengoptimumkan penukaran wajib dan _myCls2
kata kunci untuk membuat prestasinya serupa. Walaupun penukaran mandatori mungkin sedikit lebih cepat dalam beberapa kes, perbezaannya sedikit tidak penting dan tidak akan menjejaskan prestasi program. null
null
kaedah yang disyorkan
Jenis kaedah penukaran yang lebih baik bergantung kepada kes penggunaan tertentu. Jika kita yakin bahawa penukaran akan berjaya, penukaran wajib menyediakan pilihan yang lebih berkesan. Walau bagaimanapun, jika penukaran mungkin gagal atau kami ingin mengendalikan nilai dengan selamat, kata kunci
adalah pilihan yang lebih selamat.
as
Secara umum, piawaian berikut boleh membantu:
Confristic bahawa penukaran akan berjaya dan memerlukan prestasi maksimum, gunakan penukaran paksa.
Apabila penukaran mungkin gagal atau ingin mengendalikan nilai dengan selamat, gunakan null
kata kunci. as
kata kunci, kerana ia mungkin memperkenalkan jenis peperiksaan yang tidak perlu dan mengurangkan prestasi.
Atas ialah kandungan terperinci Casting vs `as` dalam C#: Bilakah saya harus menggunakan yang mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!