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
Linda Hamiltonasal
2025-01-29 15:41:09824semak imbas

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
<code class="language-csharp">public abstract class Animal
{
    public abstract string GetName();
}

public class Cat : Animal
{
    public string GetMeow();
}</code>
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.
<code class="language-csharp">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(); }
}</code>

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:
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