C#은 배열 슬라이싱이라고 알려진 프로세스인 바이트 배열의 일부를 추출하는 효율적인 방법을 제공합니다. 이 기술은 불필요한 데이터 복사를 방지하여 성능을 향상시킵니다.
ArraySegment<T>
ArraySegment<T>
클래스는 배열의 일부를 나타내는 간단한 방법을 제공합니다. 새로운 배열을 생성하지 않고 슬라이싱하여 메모리를 절약하는 데 이상적입니다.
<code class="language-csharp">byte[] foo = new byte[4096]; var slice = new ArraySegment<byte>(foo, 0, 40);</code>
slice
의 처음 40바이트를 나타내는 foo
이 생성됩니다.
IEnumerable<byte>
슬라이스된 배열을 반복하려면 ArraySegment<byte>
확장 메서드(.NET 3.5 이상에서 사용 가능)를 사용하여 IEnumerable<byte>
를 AsEnumerable()
으로 변환하세요.
<code class="language-csharp">IEnumerable<byte> sliceAsEnumerable = slice.AsEnumerable();</code>
sliceAsEnumerable
이제 선택한 바이트에 대해 쉽게 반복할 수 있습니다.
또는 LINQ의 Take()
방법은 동일한 결과를 얻을 수 있는 간결한 방법을 제공합니다.
<code class="language-csharp">IEnumerable<byte> slicedBytes = foo.Take(40);</code>
이렇게 하면 IEnumerable<byte>
의 처음 40바이트를 포함하는 foo
도 생성됩니다.
C#은 ArraySegment<T>
을 통해 메모리 효율성을 높이고 LINQ의 Take()
을 통해 간결한 코드를 통해 유연한 배열 슬라이싱을 제공합니다. 둘 다 특히 효율적인 바이트 조작이 중요한 네트워크 프로그래밍과 같은 애플리케이션에서 배열 세그먼트를 처리하는 데 유용한 도구입니다.
위 내용은 C#에서 배열 슬라이싱을 효율적으로 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!