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
643 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!

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