>백엔드 개발 >C++ >C#에서 배열을 어떻게 분할할 수 있나요?

C#에서 배열을 어떻게 분할할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2025-01-14 20:15:48422검색

How Can I Slice an Array in C#?

C#의 배열 슬라이싱

Perl과 달리 C#은 @bar = @foo[0..40]; 구문을 직접 사용하여 배열을 분할할 수 있습니다. 그러나 유사한 기능을 달성하기 위한 몇 가지 대안이 있습니다.

배열 세그먼트

원본 배열 복사를 방지하는 간단한 옵션을 원할 경우 ArraySegment<T> 사용을 고려해 보세요. 기본 요소를 복사하지 않고 배열의 연속 부분을 나타냅니다.

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

segment에는 이제 원본 foo 배열의 처음 41바이트가 포함됩니다. ArrayOffset 특성을 통해 해당 콘텐츠에 액세스하거나 LINQ 식에서 직접 사용할 수 있습니다.

LINQ 건너뛰고 가져가기

LINQ를 선호하는 경우 SkipTake 메서드를 사용하여 슬라이싱을 구현할 수 있습니다.

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

slicefoo 배열의 처음 41바이트를 IEnumerable<byte> 시퀀스로 반환합니다.

맞춤형 배열 슬라이싱 기능

ArraySegment이나 LINQ가 요구 사항을 충족하지 않는 경우 인덱스 범위를 사용하여 사용자 지정 배열 분할 함수를 만들 수 있습니다.

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

위 내용은 C#에서 배열을 어떻게 분할할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.