C# 배열 하위 집합: 효율적으로 배열 부분 처리
단일 데이터 유형의 요소를 연속 메모리에 저장하는 C# 배열은 원본을 변경하지 않고 특정 부분을 작업해야 하는 경우가 많습니다. 이는 네트워크 통신(예: 소켓에서 설정된 바이트 수 수신)과 같이 광범위한 배열을 처리할 때 특히 관련이 있습니다. 일부 언어처럼 직접 배열 슬라이싱이 내장되어 있지는 않지만 ArraySegment<T>
매우 효율적인 솔루션을 제공합니다.
도전:
큰 바이트 배열을 상상해 보세요.
<code class="language-csharp">byte[] foo = new byte[4096];</code>
이 작업은 중복 배열이나 x
컬렉션을 생성하지 않고 초기 IEnumerable<byte>
바이트를 추출하는 것입니다.
ArraySegment<T>
솔루션:
C#은 명시적인 슬라이싱 대신 ArraySegment<T>
:
<code class="language-csharp">string[] a = { "one", "two", "three", "four", "five" }; var segment = new ArraySegment<string>(a, 1, 2);</code>
ArraySegment<T>
은 데이터 중복 없이 기존 배열의 일부를 참조하는 경량 래퍼 역할을 합니다.
이해 ArraySegment<T>
:
ArraySegment<T>
생성자는 세 가지 인수를 사용합니다.
이 예에서 segment
는 a
배열 내에서 "2"와 "3"을 가리킵니다.
ArraySegment<T>
의 장점:
ArraySegment<T>
을 통해 요소에 액세스하는 것이 새 배열을 만드는 것보다 빠릅니다.요약:
ArraySegment<T>
은 C#에서 배열 하위 집합 작업에 대한 간소화되고 효율적인 접근 방식을 제공합니다. 성능을 향상시키고 메모리 소비를 줄여 대규모 어레이 및 네트워크 작업과 관련된 시나리오에 이상적입니다.
위 내용은 데이터를 복사하지 않고 C#에서 효율적으로 배열 조각을 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!