Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyelesaikan Ralat 'Nilai Jenis 'T' Tidak Boleh Ditukar' dalam Kaedah C# Generik?

Bagaimana untuk Menyelesaikan Ralat 'Nilai Jenis 'T' Tidak Boleh Ditukar' dalam Kaedah C# Generik?

DDD
Lepaskan: 2025-01-06 04:10:44
asal
384 orang telah melayarinya

How to Solve

Menyelesaikan "Nilai Jenis 'T' Tidak Boleh Ditukar" Ralat dalam Casting Generik

Mesej ralat dalam bentuk "Nilai jenis ' T' tidak boleh ditukar kepada" boleh timbul apabila cuba menghantar parameter jenis generik kepada jenis tertentu dalam generik kaedah.

Pertimbangkan kaedah berikut:

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

    return t;
}
Salin selepas log masuk

Kod ini cuba menghantar pembolehubah input t kepada rentetan jika parameter generik T adalah daripada rentetan jenis. Walau bagaimanapun, pengkompil menimbulkan ralat disebabkan oleh pengehadan berikut:

  • Pengkompil tidak boleh menentukan jenis T sebenar dalam blok if.
  • Pemutus langsung T kepada rentetan tidak dibenarkan kerana T mungkin jenis yang berbeza.

Untuk menyelesaikan isu ini, penghantaran mesti menggunakan dua langkah berikut pendekatan:

  1. Hantar T ke objek jenis asas.
  2. Hantar objek yang terhasil kepada jenis yang diingini, dalam rentetan kes ini.

Yang dibetulkan kod ialah:

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Nilai Jenis 'T' Tidak Boleh Ditukar' dalam Kaedah C# Generik?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan