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바이트가 포함됩니다. Array
및 Offset
특성을 통해 해당 콘텐츠에 액세스하거나 LINQ 식에서 직접 사용할 수 있습니다.
LINQ 건너뛰고 가져가기
LINQ를 선호하는 경우 Skip
및 Take
메서드를 사용하여 슬라이싱을 구현할 수 있습니다.
<code class="language-csharp">IEnumerable<byte> slice = foo.Skip(0).Take(41);</code>
slice
은 foo
배열의 처음 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!