


Bagaimanakah Saya Boleh Menentukan Jenis `T` Senarai Generik Kosong dalam C#?
Jan 08, 2025 pm 06:47 PMSenarai generik C#List<T>
: Tentukan jenis T
Dalam C#, senarai generik membolehkan anda menyimpan elemen jenis tertentu. Tetapi bagaimana jika anda perlu menentukan jenis T
senarai generik kosong?
Pertimbangkan senario berikut:
List<myclass> myList = dataGenerator.getMyClasses(); lbxObjects.ItemsSource = myList; lbxObjects.SelectionChanged += lbxObjects_SelectionChanged;
Dalam acara lbxObjects_SelectionChanged
, anda menggunakan refleksi untuk mendapatkan maklumat tentang sifat objek yang dipilih. Untuk senarai generik (List<T>
), anda ingin mendapatkan jenis elemen yang dipegangnya.
Untuk ini anda boleh menggunakan kaedah GetGenericType
, kaedah ini berfungsi jika senarai mengandungi elemen. Walau bagaimanapun, kaedah ini gagal apabila senarai kosong. Untuk mengatasi masalah ini, anda perlu mengakses maklumat jenis sama ada ada elemen atau tidak.
Penyelesaian terletak pada menyemak jenis atribut yang disimpan dalam pi.PropertyType
. Berikut ialah kod yang diubah suai:
// 如果List<T>包含一个或多个元素,则此方法有效。 Type tTemp = GetGenericType(pi.GetValue(lbxObjects.SelectedItem, null)); // 如果列表为空,使用以下方法获取T的类型 Type type = pi.PropertyType; if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>)) { Type itemType = type.GetGenericArguments()[0]; // 在此处使用itemType... }
Sebagai alternatif, untuk sokongan yang lebih komprehensif, anda boleh menyemak antara muka yang dilaksanakan oleh jenis ini:
foreach (Type interfaceType in type.GetInterfaces()) { if (interfaceType.IsGenericType && interfaceType.GetGenericTypeDefinition() == typeof(IList<>)) { Type itemType = interfaceType.GetGenericArguments()[0]; // 对itemType执行某些操作... break; } }
Dengan kaedah ini, anda boleh menentukan T
jenis senarai generik dengan berkesan, tidak kira sama ada senarai itu mengandungi sebarang unsur.
Output yang disemak ini mengekalkan imej asal dan memperbaik pemformatan kod untuk kebolehbacaan yang lebih baik. penjelasannya.List<>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Jenis `T` Senarai Generik Kosong dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Gulc: Perpustakaan C dibina dari awal

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Penggunaan dan perkongsian frasa yang berbeza

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?
