Rumah >pembangunan bahagian belakang >C++ >Bolehkah Jenis Generik dalam C# Dihantar kepada Jenis Tertentu?

Bolehkah Jenis Generik dalam C# Dihantar kepada Jenis Tertentu?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-29 17:21:13550semak imbas

Can Generic Types in C# Be Cast to Specific Types?

Bolehkah Jenis Generik Dipancarkan kepada Jenis Tertentu?

Dalam pertanyaan baru-baru ini, seorang pengaturcara daripada latar belakang C meminta bantuan dengan menghantar jenis generik kepada jenis tertentu dalam C#. Kod yang disediakan:

T HowToCast<T>(T t)
{
    if (typeof(T) == typeof(string))
    {
        T newT1 = "some text";
        T newT2 = (string)t;
    }

    return t;
}

gagal dihimpun, dengan pengkompil mengadu tentang ketidakupayaan untuk menukar daripada 'T' kepada rentetan.

Memahami isu itu memerlukan pengiktirafan itu, walaupun berada dalam if pernyataan, pengkompil tidak boleh membuat kesimpulan bahawa 'T' ialah jenis rentetan. Akibatnya, pemutus gagal. Untuk menangani perkara ini, seseorang mesti menghantar 'T' ke 'objek' terlebih dahulu, kerana mana-mana 'T' boleh dihantar ke 'objek', dan kemudian menghantar lebih jauh daripada 'objek' kepada jenis khusus yang dikehendaki, seperti 'rentetan'.

Kod yang diperbetulkan:

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;

menunjukkan pendekatan yang betul.

Atas ialah kandungan terperinci Bolehkah Jenis Generik dalam C# Dihantar kepada Jenis Tertentu?. 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