Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan Jenis T dalam Senarai Generik Kosong dalam C#?

Bagaimanakah Saya Boleh Menentukan Jenis T dalam Senarai Generik Kosong dalam C#?

Susan Sarandon
Lepaskan: 2025-01-08 18:51:50
asal
181 orang telah melayarinya

How Can I Determine the Type of T in an Empty Generic List in C#?

Senarai generik C# dan pemerolehan maklumat jenis

Mekanisme pantulan dalam pengaturcaraan berorientasikan objek membolehkan pembangun memeriksa struktur dan tingkah laku jenis pada masa jalan. Apabila menggunakan koleksi generik (seperti List<T>), jenis parameter generik T perlu diambil untuk mengakses atau mencipta objek jenis itu.

Andaikan anda mempunyai objek yang mengandungi sifat SomList bernama List<SomeClass>. Bagaimana untuk menentukan jenis SomList dalam senarai generik jika T kosong?

Mari kita analisis contoh kod untuk menjawab soalan ini:

<code class="language-csharp">// 假设 "GetListType" 是您用来检索类型的函数。
private Type GetListType(object myObject)
{
    Type type = myObject.GetType();
    if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
    {
        Type[] typeArguments = type.GetGenericArguments();
        Type itemType = typeArguments[0]; // 这是泛型列表参数 `T` 的类型。
        return itemType;
    }

    throw new ArgumentException("对象不包含泛型列表属性。");
}</code>
Salin selepas log masuk

Dalam kod yang dipertingkatkan ini, kami mencipta kaedah bernama GetListType yang menerima objek sebagai input dan mengembalikan jenis T jika objek mengandungi sifat senarai generik kosong.

Kaedah ini menggunakan pantulan untuk menentukan sama ada jenis objek adalah jenis generik dan sama ada definisi generik sepadan dengan jenis List<>. Jika syarat ini dipenuhi, kod mendapatkan semula parameter jenis (dalam kes ini hanya terdapat satu parameter jenis) dan mengembalikannya sebagai jenis T.

Perlu ambil perhatian bahawa kod ini bergantung pada nilai hartanah yang boleh diakses (bukan nol). Dalam senario anda, jika SomList kosong, anda mungkin mahu menyemak nilai nol dan mengendalikannya dengan sewajarnya.

Respons yang disemak ini mengekalkan imej asal dan meningkatkan kejelasan dan aliran penjelasan, menangani masalah teras menentukan jenis T walaupun semasa senarai kosong Perubahan utama adalah dalam mengendalikan definisi jenis List<> lebih tepat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Jenis T dalam Senarai Generik Kosong 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