Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghidupkan Jenis Generik dalam C# dengan Pembolehubah sebagai Parameter Jenis?

Bagaimanakah Saya Boleh Menghidupkan Jenis Generik dalam C# dengan Pembolehubah sebagai Parameter Jenis?

Barbara Streisand
Lepaskan: 2025-01-13 06:03:43
asal
163 orang telah melayarinya

How Can I Instantiate a Generic Type in C# with a Variable as the Type Parameter?

menyatakan jenis generik C# menggunakan pembolehubah sebagai parameter jenis

Dalam C#, selalunya perlu untuk mencipta contoh jenis generik berdasarkan parameter jenis yang ditentukan secara dinamik. Walau bagaimanapun, memberikan nilai parameter jenis secara langsung dalam kata kunci new tidak mungkin dan mengakibatkan ralat berikut:

<code>'List<k>' is a 'Type' but is used like a 'Type'</k></code>
Salin selepas log masuk

Penyelesaian

Untuk mengatasi had ini, refleksi boleh digunakan untuk membina jenis generik secara eksplisit:

  1. Dapatkan jenis kelas generik (contohnya, List<T>):

    <code class="language-C#">Type genericListType = typeof(List<>);</code>
    Salin selepas log masuk
  2. Ganti <T> dengan jenis yang diingini untuk mendapatkan jenis generik konkrit:

    <code class="language-C#">Type specificListType = genericListType.MakeGenericType(typeof(double));</code>
    Salin selepas log masuk
  3. Gunakan refleksi untuk mencipta tika jenis generik tertentu:

    <code class="language-C#">var list = Activator.CreateInstance(specificListType);</code>
    Salin selepas log masuk

Dengan pendekatan ini, anda boleh mencipta tika jenis generik yang menggunakan parameter jenis didorong pembolehubah.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghidupkan Jenis Generik dalam C# dengan Pembolehubah sebagai Parameter Jenis?. 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