728x90
ArraySegment
- 배열(Array)의 특정 데이터를 참조할 수 있게 해주는 래퍼(Wrapper)이다.
- 1차원 배열의 래퍼로 배열 내의 요소를 길이(범위)를 지정하여 구분한다.
- 구분되어 있는 배열의 범위를 참조하기 때문에 사용할 때 새로운 배열을 만들지 않는다.
- 배열의 일부만 나타내는 개체를 상대적으로 비용이 많이 드는 메서드 Copy를 호출하는 대신 메서드에 인수로 전달 ArraySegment 하여 배열의 일부 복사본을 전달할 수 있다.
- 다중 스레드 앱에서 구조를 사용하여 각 스레드가 ArraySegment 배열의 일부에서만 작동하도록 할 수 있다.
- ArraySegment는 불변(immutable) 구조체(struct)이기 때문에 내용을 변경할 수 없다.
- 원본 배열을 보호하면서 배열의 일부를 참조하고자 할 때 유용하다.
Array와 ArraySegment의 차이점
- 배열의 특정 위치에서 특정 크기만큼 참고하고 싶은 때 보통 새로 배열을 만든 후 복사해야 원하는 데이터만 참조할 수 있다.
- ArraySegment를 사용하면 새로 배열을 만들지 않으면서 버퍼의 특정 데이터를 참조할 수 있다.
728x90
'언어 > C#' 카테고리의 다른 글
as/ is/ this/ base (0) | 2024.07.31 |
---|---|
Interlocked (0) | 2024.07.31 |
Invoke & BeginInvoke (0) | 2024.07.31 |
ConcurrentQueue<T> (0) | 2024.07.31 |
Dispose (0) | 2024.07.31 |