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

C#のCharEnumerator.Clone()メソッドとは?使い方とサンプルコードを解説

C#のCharEnumerator.Clone()メソッドは、現在のCharEnumeratorオブジェクトのコピー(複製)を作成するために使用されます。Clone()で取得した複製は元の列挙子とは独立して動作するため、文字列の途中の位置から残りの文字を個別に走査したい場合などに便利です。

構文

public object Clone();

戻り値はobject型であるため、実際に使用する際にはCharEnumerator型へのキャストが必要です。

サンプルコード

それでは、CharEnumerator.Clone()メソッドを使った具体的な実装例を見てみましょう。

using System;

public class Demo {
   public static void Main() {
      string strNum = "356";
      CharEnumerator ch = strNum.GetEnumerator();
      while (ch.MoveNext()) {
         Console.Write(ch.Current + " ");
         // 現在の位置から列挙子を複製
         CharEnumerator enumClone = (CharEnumerator)ch.Clone();
         while (enumClone.MoveNext())
            Console.Write(enumClone.Current + " ");
         Console.WriteLine();
      }
   }
}

実行結果

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

3 5 6
5 6
6

コードの解説

この例では、文字列「356」に対してGetEnumerator()メソッドでCharEnumeratorを取得し、whileループで先頭から順に文字を読み進めています。各ループ内でClone()メソッドを呼び出すことで、その時点の位置情報を持った独立したコピーを生成しています。

複製されたenumCloneは元のchの状態に影響を与えず、独自にMoveNext()を呼び出して末尾まで走査できます。そのため、1周目のループでは「3」以降の「3 5 6」、2周目では「5」以降の「5 6」、3周目では「6」のみが出力されるという仕組みです。

このようにClone()メソッドを活用すれば、同じ列挙子の異なる位置から複数回の走査を行う処理を簡潔に実装できます。文字列の解析やパターン照合など、列挙の途中状態を保存しておきたい場面で特に役立ちます。

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

    HTML DOMのcloneNode()メソッドは、呼び出し対象のノードのコピーを作成し、その複製を返すメソッドです。このメソッドを使うことで、指定したノードが持つすべての属性と値をまとめて複製できます。構文cloneNode()メソッドの基本構文は以下の通りです。yourNode.cloneNode([deep])ここで「deep」は省略可能なパラメータです。値に「true」を設定すると、対象ノードだけでなく、その子ノードや属性・値もすべて一緒に複製されます。逆に「false」を設定すると、対象ノード自身とその属性・値のみがコピーされ、子ノードは複製されません。サンプルコードそれでは、HTM

  2. Javaのclone()メソッドの重要性とは?シャローコピーとディープコピーの違いを徹底解説

    Javaにおけるclone()メソッドは、Cloneableインターフェースを実装したクラスのオブジェクトを複製(コピー)するために使用されます。デフォルトではフィールド単位のコピーが行われます。これは、Objectクラスが呼び出し元クラスの具体的なメンバー構成を知らないためです。そのため、クラスがプリミティブ型のメンバーのみを持つ場合は、新しいオブジェクトのコピーが作成され、その参照が返されます。しかし、クラスが参照型(クラス型)のメンバーを持つ場合には、オブジェクトへの参照だけがコピーされ、元のオブジェクトと複製されたオブジェクトの両方が同じインスタンスを指すことになります。また、Clon