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

C#のCharEnumerator.MoveNext()メソッドとは?使い方を解説

CharEnumerator.MoveNext()メソッドとは

C#のCharEnumerator.MoveNext()メソッドは、現在のCharEnumeratorオブジェクトの内部インデックスを1つ進め、列挙対象の文字列における「次の文字」へ移動するために使用されます。

このメソッドはIEnumeratorインターフェースの標準的な動作に従っており、文字列を1文字ずつ順番に処理したい場合に活用されます。

戻り値

MoveNext()メソッドはbool型の値を返します。

  • 次の文字へ正常に移動できた場合 → true
  • 文字列の末尾に達して移動できない場合 → false

この特性により、whileループなどの終了条件として自然に組み込むことができます。

構文

public bool MoveNext ();

引数は不要で、呼び出すだけで内部ポインタが次の文字へ進みます。

使用例

それでは、CharEnumerator.MoveNext()メソッドを使った具体的なサンプルコードを見てみましょう。

using System;
public class Demo {
   public static void Main(){
      string strNum = "john";
      CharEnumerator ch = strNum.GetEnumerator();
      Console.WriteLine("HashCode = "+ch.GetHashCode());
      Console.WriteLine("Get the Type = "+ch.GetType());
      while (ch.MoveNext())
         Console.Write(ch.Current + " ");
      // オブジェクトを破棄
      ch.Dispose();
      // 破棄済みのためアクセスするとエラーになる(コメントアウト)
      // Console.WriteLine(ch.Current);
   }
}

このコードでは、まずGetEnumerator()メソッドで文字列"john"のCharEnumeratorを取得し、ハッシュコードと型情報を出力しています。その後、whileループ内でMoveNext()を繰り返し呼び出すことで、文字列を1文字ずつ取り出して表示しています。

最後にDispose()でオブジェクトを破棄しています。破棄後にCurrentプロパティへアクセスすると例外が発生するため、該当行はコメントアウトされています。

出力結果

上記のコードを実行すると、次のような出力が得られます。

HashCode = 1373506
Get the Type = System.CharEnumerator
j o h n

ポイントまとめ

  • MoveNext()の役割: 内部インデックスを次の文字へ進める
  • 戻り値: 移動成功でtrue、文字列の末尾でfalseを返す
  • GetEnumerator(): string型のGetEnumerator()メソッドからCharEnumeratorを取得できる
  • 注意点: Dispose()呼び出し後のCurrentへのアクセスは例外となるため避ける
  1. C#のCompareTo()メソッドの使い方を解説

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

  2. RubyのArray#zipメソッド徹底解説!2つの配列をスマートに結合する方法

    2つの配列を要素ごとに比較して、その違いを見つけたいと思ったことはありませんか? あるいは、各インデックスごとに最大の数値を求めたい、キーのリストと値のリストを組み合わせてハッシュを作りたい――そんな場面にも出会うことがあるでしょう。 …これを「面倒な方法」で実装すると、次のようなコードになります。 例:冗長な書き方 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 確かに動作はしますが