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
DDDasal
2025-01-06 04:10:44410semak imbas

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;
}

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;

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:
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