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

【C#入門】CharEnumerator.Reset()メソッドの使い方をわかりやすく解説

C#のCharEnumerator.Reset()メソッドは、列挙対象となっている文字列の最初の文字よりも論理的に手前の位置へ、内部インデックスを初期化するためのメソッドです。このメソッドを呼び出すことで、同じCharEnumeratorオブジェクトを使い回して、文字列の走査を最初からやり直すことができます。

なお、Reset()を呼び出した直後はカーソルが先頭文字の手前にあるため、CurrentプロパティにアクセスするとInvalidOperationExceptionがスローされる点に注意してください。必ずMoveNext()を呼び出してからCurrentを参照するようにしましょう。

構文

public void Reset ();

Reset()メソッドは引数を受け取らず、戻り値もありません(void型)。

使用例

それでは、CharEnumerator.Reset()メソッドの具体的な使用例を見てみましょう。以下のコードでは、まずMoveNext()とCurrentを使って文字列を1文字ずつ出力した後、Reset()で列挙位置を先頭に戻し、再度同じ文字列を走査しています。

using System;
public class Demo {
   public static void Main(){
      string strNum = "This is it!";
      CharEnumerator ch = strNum.GetEnumerator();
      Console.WriteLine("HashCode = "+ch.GetHashCode());
      Console.WriteLine("Get the Type = "+ch.GetType());
      while (ch.MoveNext())
         Console.Write(ch.Current + " ");
      ch.Reset();
      Console.WriteLine();
      while (ch.MoveNext())
         Console.Write(ch.Current);
   }
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

HashCode = 65311716
Get the Type = System.CharEnumerator
T h i s i s i t !
This is it!

このように、1回目のループでは各文字がスペース区切りで出力され、Reset()を呼び出した後の2回目のループでは、再び文字列全体が連続して出力されていることが確認できます。


  1. HTML DOM フォームの reset() メソッドとは?使い方とサンプルコードを解説

    HTML DOM の Form reset() メソッドは、フォーム内のすべての入力値を初期化し、各フォーム要素の value 属性で指定されたデフォルト値を再表示するためのメソッドです。いわば「リセットボタン」として機能し、フォームに入力されたデータを一括でクリアできます。なお、このメソッドは引数(パラメータ)を一切受け取りません。構文Form オブジェクトの reset() メソッドの基本的な構文は以下のとおりです。formObject.reset()使用例ここでは、reset() メソッドを使った具体的なサンプルコードを見てみましょう。<!DOCTYPE html> <

  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]] 確かに動作はしますが