Rumah >pembangunan bahagian belakang >C++ >Bolehkah Objek Kelas Asas Ditugaskan kepada Rujukan Kelas Terbitan dalam C#?

Bolehkah Objek Kelas Asas Ditugaskan kepada Rujukan Kelas Terbitan dalam C#?

Barbara Streisand
Barbara Streisandasal
2025-01-18 11:56:12768semak imbas

Can a Base Class Object Be Assigned to a Derived Class Reference in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn