Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengelakkan Amaran 'Kemungkinan Penghitungan Berbilang IEnumerable' dalam C#?

Bagaimanakah Saya Boleh Mengelakkan Amaran 'Kemungkinan Penghitungan Berbilang IEnumerable' dalam C#?

Linda Hamilton
Lepaskan: 2025-01-04 14:48:40
asal
716 orang telah melayarinya

How Can I Avoid the

Menangani Bahaya Penghitungan Berbilang IEnumerable

Apabila bekerja dengan koleksi IEnumerable, pembangun sering menghadapi amaran "Kemungkinan penghitungan berbilang IEnumerable ," yang timbul apabila koleksi diulang beberapa kali. Isu ini boleh menimbulkan masalah, terutamanya apabila bekerja dengan jenis koleksi tertentu, seperti yang mewakili pertanyaan pangkalan data atau operasi mahal lain.

Pertimbangkan coretan kod berikut:

public List<object> Foo(IEnumerable<object> objects)
{
    if (objects == null || !objects.Any())
        throw new ArgumentException();

    var firstObject = objects.First();
    var list = DoSomeThing(firstObject);        
    var secondList = DoSomeThingElse(objects);
    list.AddRange(secondList);

    return list;
}
Salin selepas log masuk

Satu cara untuk elakkan amaran penghitungan berbilang adalah untuk mengubah suai parameter kaedah untuk menerima Senarai bukannya IEnumerable. Walau bagaimanapun, pendekatan ini mungkin tidak selalu boleh dilaksanakan, terutamanya jika anda ingin mengekalkan akses kepada objek tertinggi dalam koleksi.

Pilihan lain ialah menukar IEnumerable kepada Senarai pada permulaan kaedah:

public List<object> Foo(IEnumerable<object> objects)
{
    var objectList = objects.ToList();
    // ...
}
Salin selepas log masuk

Walaupun teknik ini berkesan dalam mencegah amaran, ia boleh berasa janggal dan tidak perlu verbose.

Kunci untuk memahami isu ini terletak pada semantik yang disampaikan oleh tandatangan kaedah. Melepasi parameter IEnumerable membayangkan bahawa pemanggil menjangkakan kaedah untuk menghitung koleksi sekali sahaja. Dengan menerima IList atau ICollection, anda secara eksplisit menyampaikan jangkaan koleksi anda kepada pemanggil, mengurangkan risiko salah faham dan kesilapan yang mahal.

Dalam situasi di mana penggunaan IEnumerable adalah penting, adalah dinasihatkan untuk melaksanakan ToList( ) penukaran pada permulaan kaedah. Ini memastikan bahawa lelaran berikutnya tidak menemui amaran penghitungan berbilang.

Adalah malang bahawa .NET tidak menyediakan antara muka yang merangkum kefungsian IEnumerable, Count dan pengindeks tanpa kaedah penambahan atau pengalihan keluar. Antara muka sedemikian akan memudahkan masalah ini dan menyediakan penyelesaian yang lebih bersih dan ringkas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Amaran 'Kemungkinan Penghitungan Berbilang IEnumerable' dalam 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