C# SkipWhile 메서드란?
SkipWhile은 .NET LINQ(System.Linq 네임스페이스)에서 제공하는 메서드로, 지정된 조건이 참(true)을 반환하는 동안 시퀀스 앞부분의 요소들을 건너뛰고(skip), 조건이 처음으로 거짓(false)이 되는 지점부터 끝까지의 나머지 요소들을 모두 반환합니다.
예를 들어, 배열에서 짝수인 요소를 건너뛰고 싶다면 아래와 같은 람다 식을 조건으로 전달하면 됩니다.
ele => ele % 2 == 0
아래 예제는 정수 배열 { 20, 35, 55 }에서 짝수인 첫 번째 요소 20을 건너뛰고, 나머지 홀수 요소들만 화면에 출력하는 코드입니다.
예제 코드
using System.IO;
using System;
using System.Linq;
public class Demo {
public static void Main() {
int[] arr = { 20, 35, 55 };
Console.WriteLine("초기 배열...");
foreach (int value in arr) {
Console.WriteLine(value);
}
// 짝수 요소 건너뛰기
var res = arr.SkipWhile(ele => ele % 2 == 0);
Console.WriteLine("짝수 요소를 건너뛴 후의 새 배열...");
foreach (int val in res) {
Console.WriteLine(val);
}
}
}실행 결과
초기 배열... 20 35 55 짝수 요소를 건너뛴 후의 새 배열... 35 55
SkipWhile 사용 시 주의 사항
SkipWhile은 조건을 만족하는 모든 요소가 아니라, 시퀀스 시작 부분부터 조건을 만족하는 연속된 요소만 건너뜁니다. 즉, 첫 번째로 조건이 거짓이 되는 요소를 만나는 순간 검사를 중단하고 그 이후의 모든 요소를 그대로 반환합니다.
따라서 배열 중간이나 뒤쪽에 위치한 짝수는 건너뛰어지지 않습니다. 만약 배열 전체에서 짝수를 걸러내고 홀수만 남기고 싶다면, SkipWhile 대신 Where(ele => ele % 2 != 0)처럼 필터링 메서드를 사용하는 것이 올바른 방법입니다.