Rumah > pembangunan bahagian belakang > C++ > Adakah C# menyokong kovarians jenis pulangan, dan bagaimanakah ia dapat dicapai?

Adakah C# menyokong kovarians jenis pulangan, dan bagaimanakah ia dapat dicapai?

Linda Hamilton
Lepaskan: 2025-01-29 15:41:09
asal
823 orang telah melayarinya

Does C# Support Return Type Covariance, and How Can It Be Achieved?

Jenis kerjasama kembali dalam jenis pulangan: Sokongan dan Pelaksanaan

Jenis pulangan dalam C#membolehkan kelas derivatif untuk mengembalikan jenis yang lebih spesifik daripada kelas asasnya. Ciri ini memungkinkan untuk membuat kaedah yang dapat memberikan tingkah laku profesional dan mengekalkan integriti struktur hierarki.

mari kita lihat contoh:

Dalam adegan ini, terdapat kaedah untuk mengembalikan rentetan dalam kelas
public abstract class Animal
{
    public abstract string GetName();
}

public class Cat : Animal
{
    public string GetMeow();
}
Salin selepas log masuk
untuk menentukan bahawa panggilan MEOWnya akan sangat berguna. Walau bagaimanapun, C#tidak secara langsung menyokong koordinasi jenis pulangan.

Cat Dalam jawapan awal pada tahun 2011, C#tidak menyokong jenis perubahan kolaboratif yang kembali, dan disebabkan oleh sekatan bahasa awam (CLR), ia tidak mungkin menyedarinya pada masa akan datang. Walau bagaimanapun, dalam versi terkini C#, keadaan ini telah berubah. Lihat artikel Pautan, "

Sebelum pengenalan jenis Co -canges, satu penyelesaian adalah untuk memperkenalkan kaedah pertengahan untuk mendapatkan nilai pulangan kelas yang diperolehi.

Teknologi ini membolehkan

spesifik untuk mengambil

, dan mengembalikan rentetan dalam contoh ini.
public abstract class Animal
{
    public abstract object GetContents();
    public Animal Contents() { return (Animal)GetContents(); }
}

public class Cat : Animal
{
    protected override object GetContents() { return this; }
    public new string Contents() { return GetMeow(); }
}
Salin selepas log masuk

Walaupun versi sebelum C# 9.0 tidak secara langsung menyokong koordinasi jenis pulangan, penyelesaian yang dibincangkan masih boleh digunakan sebagai kaedah untuk merealisasikan tingkah laku yang diperlukan. Walau bagaimanapun, perlu diperhatikan bahawa dalam versi C#yang lebih tinggi, pelaksanaan rasmi koordinasi jenis kembali menyediakan penyelesaian yang lebih elegan dan lebih ringkas. Cat

Atas ialah kandungan terperinci Adakah C# menyokong kovarians jenis pulangan, dan bagaimanakah ia dapat dicapai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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