Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghiris Array dalam C#?

Bagaimanakah Saya Boleh Menghiris Array dalam C#?

Linda Hamilton
Lepaskan: 2025-01-14 20:15:48
asal
420 orang telah melayarinya

How Can I Slice an Array in C#?

Penghirisan tatasusunan dalam C#

C# tidak seperti Perl boleh terus menggunakan sintaks @bar = @foo[0..40]; untuk menghiris tatasusunan. Walau bagaimanapun, terdapat beberapa alternatif untuk mencapai fungsi yang sama.

ArraySegmen

Untuk pilihan ringan yang mengelakkan penyalinan tatasusunan asal, pertimbangkan untuk menggunakan ArraySegment<T>. Ia mewakili bahagian bersebelahan tatasusunan tanpa menyalin elemen asas:

<code class="language-csharp">byte[] foo = new byte[4096];
var segment = new ArraySegment<byte>(foo, 0, 41);</code>
Salin selepas log masuk

segment kini mengandungi 41 bait pertama tatasusunan foo asal. Anda boleh mengakses kandungannya melalui atribut Array dan Offset, atau menggunakannya terus dalam ungkapan LINQ.

LINQ Langkau dan Ambil

Jika anda lebih suka LINQ, anda boleh menggunakan kaedah Skip dan Take untuk melaksanakan penghirisan:

<code class="language-csharp">IEnumerable<byte> slice = foo.Skip(0).Take(41);</code>
Salin selepas log masuk

slice akan mengembalikan 41 bait pertama tatasusunan foo sebagai urutan IEnumerable<byte>.

Fungsi menghiris tatasusunan tersuai

Jika ArraySegment mahupun LINQ tidak memenuhi keperluan anda, anda boleh mencipta fungsi menghiris tatasusunan tersuai menggunakan julat indeks:

<code class="language-csharp">byte[] Slice(byte[] array, int startIndex, int length)
{
    byte[] slice = new byte[length];
    Array.Copy(array, startIndex, slice, 0, length);
    return slice;
}

byte[] slice = Slice(foo, 0, 41);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghiris Array 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