Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengendalikan Isu Keserasian Penukaran Nilai dalam Kaedah Generik C#?

Bagaimana Mengendalikan Isu Keserasian Penukaran Nilai dalam Kaedah Generik C#?

Linda Hamilton
Lepaskan: 2024-12-28 14:49:19
asal
697 orang telah melayarinya

How to Handle Value Conversion Compatibility Issues in C# Generic Methods?

Kesesuaian Penukaran Nilai dalam Kaedah Generik

Dalam C#, kaedah generik boleh menghadapi isu penukaran apabila bekerja dengan parameter jenis. Apabila menggunakan operator 'typeof(T)' dalam kaedah generik, adalah penting untuk mempertimbangkan jenis sebenar yang diwakili oleh T semasa pelaksanaan.

Seperti yang ditunjukkan dalam coretan kod yang disediakan:

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

    return t;
}
Salin selepas log masuk

Pengkompil menganggap anda mahu menghantar 't' terus ke rentetan, walaupun semak 'typeof(T) == typeof(string)', dan ralat masa kompilasi dihasilkan. Sebab ralat ini ialah, pada masa penyusunan, pengkompil tidak tahu apa yang diwakili oleh T dan menganggap ia boleh menjadi sebarang jenis.

Untuk menyelesaikan isu ini, anda perlu menghantar 't' ke jenis perantaraan yang menyokong penukaran kepada rentetan. Dalam C#, semua objek melaksanakan jenis 'objek', yang boleh secara tersirat dihantar ke rentetan. Oleh itu, anda boleh menggunakan kod berikut:

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

Dengan menghantar 't' kepada 'objek' dahulu, anda memastikan ia boleh ditukar kemudiannya kepada rentetan, kerana 'objek' ialah jenis asas untuk semua objek dalam C#.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Isu Keserasian Penukaran Nilai dalam Kaedah Generik C#?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan