Rumah >pembangunan bahagian belakang >C++ >Bolehkah Objek Kelas Asas Ditugaskan kepada Rujukan Kelas Terbitan dalam C#?
Tetapkan objek kelas asas kepada rujukan kelas terbitan dalam C#
Dalam C#, bolehkah saya menggunakan penukaran jenis eksplisit untuk menetapkan objek kelas asas kepada rujukan kelas terbitan? Percubaan untuk melakukan ini akan mengakibatkan ralat masa jalan.
Penjelasan
Anda tidak boleh menetapkan objek kelas asas secara langsung kepada rujukan kelas terbitan. Ini kerana rujukan kelas terbitan mengandaikan bahawa ia menunjuk kepada contoh kelas terbitan, bukan objek kelas asas. Menetapkan objek kelas asas kepada rujukan kelas terbitan boleh membawa kepada tingkah laku yang tidak konsisten dan hasil yang tidak dijangka.
Contoh
Pertimbangkan kod berikut:
<code class="language-csharp">object o = new object(); string s = (string)o; int i = s.Length;</code>
Percubaan untuk mengakses sifat Length pembolehubah rentetan s akan menghasilkan pengecualian kerana s sebenarnya objek, bukan rentetan.
Untuk mencapai penukaran antara kelas asas dan terbitan, pertimbangkan untuk melaksanakan kaedah yang mencipta contoh jenis terbitan yang sesuai berdasarkan jenis asas. Sebagai alternatif, nilai semula hierarki warisan untuk menghapuskan keperluan untuk penukaran ini.
Atas ialah kandungan terperinci Bolehkah Objek Kelas Asas Ditugaskan kepada Rujukan Kelas Terbitan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!