C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のSkipWhileメソッドとは?条件を満たす要素をスキップする使い方を解説

C#のLINQに含まれるSkipWhileメソッドは、指定した条件が満たされている間、シーケンス(配列やリストなど)の先頭から要素を読み飛ばすためのメソッドです。条件が初めて成立しなくなった時点で処理を止め、その要素以降のすべての要素を返します。

基本構文

例えば、「偶数の要素をすべてスキップしたい」場合は、次のようなラムダ式を条件として指定します。

ele => ele % 2 == 0

この条件式では、要素を2で割った余りが0(つまり偶数)である間、要素がスキップされます。

使用例:偶数をスキップして奇数だけを表示する

以下のサンプルコードでは、整数型の配列から偶数の要素をスキップし、残りの奇数の要素のみを出力しています。

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

処理の流れを解説

この例では、配列 { 20, 35, 55 } の先頭から順に条件「ele % 2 == 0(偶数である)」が評価されます。

  • 20 → 偶数なので条件を満たし、スキップされます。
  • 35 → 奇数なので条件を満たさず、ここでスキップが終了します。
  • 55 → 条件の評価に関係なく、以降の要素はすべてそのまま返されます。

そのため、結果として 35 と 55 のみが出力されます。

注意点

SkipWhileは「条件を満たす要素をすべて除外する」メソッドではなく、「条件を満たしている間だけ先頭から読み飛ばす」という挙動を持つ点に注意が必要です。途中で条件を満たさない要素が現れた場合、それ以降に条件を満たす要素があってもスキップされません。すべての偶数を除外したい場合は、Where(ele => ele % 2 != 0) のようなフィルタリングを使用します。

  1. C#のCompareTo()メソッドの使い方を解説

    C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数

  2. Pythonでリスト内の連続する偶数要素を交換する方法

    問題の概要数値のリスト nums が与えられたとき、「連続して現れる偶数」同士をペアごとに入れ替えることを考えます。たとえば、入力が nums = [4, 5, 6, 8, 10] の場合、出力は [6, 5, 4, 10, 8] となります。解法のアプローチこの問題は、一時変数を1つ用意するだけでシンプルに解決できます。手順は以下の通りです。一時変数 temp を None で初期化するi を 0 からリストの要素数まで順にループさせるnums[i] が偶数(2で割った余りが0)の場合:temp が None でなければ、nums[i] と nums[temp] を交換し、temp を No