Rumah > pembangunan bahagian belakang > C++ > Bolehkah Senarai C# Memegang Pelbagai Jenis Generik dengan Parameter Jenis Berbeza?

Bolehkah Senarai C# Memegang Pelbagai Jenis Generik dengan Parameter Jenis Berbeza?

Barbara Streisand
Lepaskan: 2025-01-18 16:32:13
asal
513 orang telah melayarinya

Can a C# List Hold Multiple Generic Types with Different Type Parameters?

Menggunakan Senarai C# dengan Pelbagai Jenis Generik: Penyelesaian

Cabarannya terletak pada mencipta senarai C# yang mampu menyimpan berbilang jenis generik dengan parameter jenis yang berbeza-beza dalam senarai yang sama. Pertimbangkan kelas Metadata<T> terhad kepada jenis nilai. Matlamatnya ialah untuk mencipta senarai yang boleh menyimpan objek Metadata<int>, Metadata<bool> dan Metadata<double> secara serentak.

Menggunakan senarai Metadata<T> secara langsung tidak mungkin kerana T mestilah jenis konkrit tunggal. Walau bagaimanapun, penyelesaian menggunakan warisan menyediakan pendekatan praktikal.

Penyelesaian menggunakan Warisan:

Pendekatan ini memperkenalkan kelas asas abstrak Metadata dan memperoleh kelas khusus seperti Metadata<T> daripadanya.

public abstract class Metadata { }

public class Metadata<T> : Metadata where T : struct
{
    private T mDataType; 
    // ... other members ...
}
Salin selepas log masuk

Kini, senarai kelas asas abstrak Metadata boleh dibuat:

List<Metadata> metadataObjects = new List<Metadata>();
Salin selepas log masuk

Senarai ini kini boleh memuatkan contoh pelbagai Metadata<T> jenis:

metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
Salin selepas log masuk

Ini menyelesaikan masalah secara elegan dengan menyediakan jenis biasa (Metadata) untuk senarai sambil membenarkan pelaksanaan jenis khusus melalui warisan. Akses kepada T khusus dalam setiap objek memerlukan penghantaran kembali kepada jenis Metadata<T> yang sesuai. Ini adalah corak biasa apabila berurusan dengan polimorfisme dan jenis generik dalam C#.

Atas ialah kandungan terperinci Bolehkah Senarai C# Memegang Pelbagai Jenis Generik dengan Parameter Jenis Berbeza?. 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