Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menaip Objek Kelas Asas dengan Selamat kepada Rujukan Kelas Terhasil dalam C#?

Bagaimana untuk Menaip Objek Kelas Asas dengan Selamat kepada Rujukan Kelas Terhasil dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-18 12:18:09
asal
777 orang telah melayarinya

How to Safely Typecast Base Class Objects to Derived Class References in C#?

Pengecoran Taip Selamat Objek Kelas Asas kepada Rujukan Kelas Terbitan dalam C#

Mengirim objek kelas asas secara langsung kepada rujukan kelas terbitan dalam C# adalah berisiko dan selalunya membawa kepada pengecualian masa jalan. Ini kerana rujukan kelas terbitan menjangkakan objek jenisnya sendiri atau null.

Contoh Ilustrasi:

<code class="language-csharp">object o = new object();
string s = (string)o; // This will throw an exception at runtime</code>
Salin selepas log masuk

Percubaan untuk mengakses ahli kelas yang diperolehi selepas hantaran yang tidak selamat ini akan mengakibatkan ralat:

<code class="language-csharp">int i = s.Length; // Runtime exception: InvalidCastException</code>
Salin selepas log masuk

Pembolehubah o memegang objek kelas asas, tidak serasi dengan ahli kelas terbitan seperti Length.

Untuk mengelakkan ralat masa jalan, sentiasa sahkan jenis sebenar objek sebelum menghantar. Operator is dan padanan corak menyediakan alternatif yang selamat:

<code class="language-csharp">object o = new object();
if (o is string str) {
    int i = str.Length; // Safe access to Length
} else {
    // Handle the case where o is not a string
}

// Or using pattern matching:
if (o is string s2)
{
    int length = s2.Length;
}</code>
Salin selepas log masuk

Sebagai alternatif, nilai semula reka bentuk kelas anda. Jika pemutus kerap antara kelas asas dan turunan diperlukan, ini mungkin menunjukkan kecacatan dalam hierarki warisan. Pemfaktoran semula untuk menghapuskan keperluan untuk tuangan sedemikian selalunya merupakan penyelesaian yang lebih baik. Pertimbangkan untuk menggunakan antara muka atau gubahan dan bukannya warisan jika sesuai.

Atas ialah kandungan terperinci Bagaimana untuk Menaip Objek Kelas Asas dengan Selamat kepada Rujukan Kelas Terhasil dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan