Rumah > pembangunan bahagian belakang > C++ > Mengapakah `Enumerable.Cast` Membuang `InvalidCastException` Apabila Menghantar `IEnumerable` kepada `IEnumerable`?

Mengapakah `Enumerable.Cast` Membuang `InvalidCastException` Apabila Menghantar `IEnumerable` kepada `IEnumerable`?

Barbara Streisand
Lepaskan: 2025-01-10 09:57:41
asal
643 orang telah melayarinya

Why Does `Enumerable.Cast` Throw an `InvalidCastException` When Casting `IEnumerable` to `IEnumerable`?

Pemahaman Enumerable.Cast dan InvalidCastException dalam C#

Ralat C# biasa berlaku apabila menggunakan Enumerable.Cast<T> untuk menukar IEnumerable<int> kepada IEnumerable<long>. InvalidCastException yang tidak dijangka timbul walaupun terdapat keserasian jenis yang jelas.

Sebabnya terletak pada cara Enumerable.Cast<T> berfungsi. Ia bukan kaedah khusus untuk koleksi generik; ia beroperasi pada tahap IEnumerable, berfungsi dengan nilai tidak berkotak.

Oleh itu, apabila menghantar elemen daripada IEnumerable<int>, setiap int sudah berkotak sebagai object. Percubaan untuk menghantar int berkotak ke long gagal secara langsung, mengakibatkan InvalidCastException.

Penyelesaian adalah untuk menghantar setiap elemen secara eksplisit dalam pertanyaan:

var castedList = list.Select(i => (long)i);
Salin selepas log masuk

Kaedah Select ini melakukan penukaran daripada int kepada long untuk setiap item, mengelakkan isu tinju. Pelakon langsung ini memintas pengehadan Enumerable.Cast<T> apabila berurusan dengan penukaran jenis nilai.

Atas ialah kandungan terperinci Mengapakah `Enumerable.Cast` Membuang `InvalidCastException` Apabila Menghantar `IEnumerable` kepada `IEnumerable`?. 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