C#의 배열 슬라이싱
이 자습서에서는 C#에서 배열을 분할하는 방법을 소개합니다.
C#에서 Linq 메서드를 사용하여 배열 슬라이스
어레이를 더 작은 하위 어레이로 분할하는 프로세스를 어레이 분할이라고합니다. Linq는 쿼리 기능을 C#의 데이터 구조와 통합하는 데 사용됩니다. Linq의 Take(x)
함수는 데이터 구조의 시작 부분에서 요소의x
수를 복사합니다. 다음 코드 예제는 C#에서 Linq를 사용하여 배열을 분할하는 방법을 보여줍니다.
using System;
using System.Linq;
namespace array_slicing {
class Program {
static void Main(string[] args) {
string[] foo = { "one", "two", "three", "four", "five" };
string[] bar = foo.Take(2).ToArray();
foreach (var e in bar) {
Console.WriteLine(e);
}
}
}
}
출력:
one
two
문자열 배열foo
를 초기화하고foo
배열의 처음 두 요소를 포함하는 다른 문자열 배열 인bar
로 슬라이스했습니다. 이 방법은 배열의 시작 요소 만이 방법으로 슬라이스 할 수 있기 때문에 매우 제한적입니다.
C#에서ArraySegment
클래스를 사용하여 배열 슬라이스
ArraySegment
클래스는 배열을 C#에서 하위 배열로 분할하는 데 사용됩니다. ArraySegment
클래스의 생성자는 분할 할 배열, 시작 인덱스 및 분할 할 요소 수를 가져 와서 하위 배열을 제공합니다. 다음 코드 예제는 C#에서ArraySegment
클래스를 사용하여 배열을 분할하는 방법을 보여줍니다.
using System;
using System.Linq;
namespace array_slicing {
class Program {
static void Main(string[] args) {
string[] a = { "one", "two", "three", "four", "five" };
var segment = new ArraySegment<string>(a, 2, 3);
foreach (var s in segment) {
Console.WriteLine(s);
}
}
}
}
출력:
three
four
five
문자열 배열a
를 초기화하고ArraySegment
클래스의 생성자를 사용하여a
배열의 인덱스 2에서 시작하는 3 개의 요소를 포함하는 하위 배열segment
로 슬라이스했습니다. 이 접근 방식으로 중간에서 배열을 분할 할 수 있기 때문에 더 나은 접근 방식입니다.
C#에서 확장 함수를 사용하여 배열 슬라이스
확장 메서드를 사용하면 사용자 지정 데이터 유형을 선언하지 않고도 기존 데이터 유형에 함수를 추가 할 수 있습니다. 또한 C#에서 배열을 분할하기위한 기본 제공 메서드 대신 사용자 정의 확장 메서드를 정의 할 수도 있습니다. 이 확장 메서드는 슬라이스의 시작 및 끝 인덱스를 가져와이 범위 내의 하위 배열을 반환 할 수 있습니다. 다음 코드 예제는 C#에서 배열을 분할하는 확장 함수를 정의하는 방법을 보여줍니다.
using System;
using System.Collections.Generic;
namespace iterate_through_a_list {
public static class Extensions {
public static T[] Slice<T>(this T[] source, int start, int end) {
if (end < 0) {
end = source.Length + end;
}
int len = end - start;
T[] res = new T[len];
for (int i = 0; i < len; i++) {
res[i] = source[i + start];
}
return res;
}
}
class Program {
static void Main(string[] args) {
string[] values = { "one", "two", "three", "four", "five" };
string[] slice = values.Slice(2, 4);
foreach (var s in slice) {
Console.WriteLine(s);
}
}
}
}
출력:
three
four
five
슬라이스의 시작 및 끝 인덱스를 가져와 슬라이스 된 하위 배열을 반환하는 확장 메서드Slice()
를 만들었습니다. 문자열 배열values
를 초기화하고values
배열의 인덱스2
에서 인덱스4
까지의 값을 포함하는slice
배열로 슬라이스했습니다.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn