C#のイテレータ関数とは?yield returnの使い方をサンプルコードで解説
イテレータメソッドとは、コレクションに対して独自の反復処理(カスタムイテレーション)を行うためのメソッドです。C#では yield return ステートメントを使用することで、各要素を一度に1つずつ順番に返すことができます。イテレータは現在の処理位置を記憶しており、次に反復処理が呼び出された際には、その続きの要素が自動的に返されます。
以下に、C#におけるイテレータメソッドの基本的な使用例を示します。
サンプルコード
using System;
using System.Collections.Generic;
using System.Linq;
namespace Demo {
class Program {
public static IEnumerable display() {
int[] arr = new int[] {99,45,76};
foreach (var val in arr) {
yield return val.ToString();
}
}
public static void Main(string[] args) {
IEnumerable ele = display();
foreach (var element in ele) {
Console.WriteLine(element);
}
}
}
}
実行結果
99 45 76
上記のコードでは、display() というイテレータメソッドを定義しています。このメソッド内では yield return ステートメントを使い、配列の各要素を1つずつ文字列に変換しながら返しています。
public static IEnumerable display() {
int[] arr = new int[] {99,45,76};
foreach (var val in arr) {
yield return val.ToString();
}
}
Main メソッド側では、display() の戻り値を受け取り、foreach ループによって各要素を順番に取り出してコンソールに出力しています。
IEnumerable ele = display();
foreach (var element in ele) {
Console.WriteLine(element);
}
このように yield return を活用することで、遅延評価(要素が必要になった時点で初めて生成される仕組み)が実現され、メモリ効率の良い反復処理を書くことができます。大量のデータを扱う場合や、シーケンスを段階的に処理したい場面で特に有効な手法です。
-
JavaScriptの高階アロー関数とは?基本概念と実装例をわかりやすく解説
JavaScriptでは、関数はオブジェクトとして扱われます。そのため、関数を別の関数に引数として渡したり、関数の戻り値として別の関数を返したりすることが可能です。このように、JavaScriptの関数は「第一級関数(ファーストクラス関数)」と呼ばれており、変数やオブジェクト、配列などに自由に格納できます。高階アロー関数(Higher Order Arrow Functions)は、関数を引数として受け取る、関数を返す、あるいはその両方を行うことができる関数のことです。高階アロー関数のサンプルコード以下は、JavaScriptで高階アロー関数を実装した例です。配列の各要素を2倍にする処理を、関
-
JavaScriptのアロー関数(短縮関数)とは?thisの違いをサンプルコードで解説
JavaScriptのアロー関数(短縮関数)とは? アロー関数は、ES2015(ES6)で導入された関数の新しい記法で、「速記関数」「短縮関数」とも呼ばれます。従来のfunctionキーワードを使った関数式と比べて、はるかに短く簡潔に関数を記述できるのが大きな魅力です。 アロー関数最大の特徴は、thisへの独自のバインディングを持たないという点です。通常の関数では呼び出され方によってthisの値が変わりますが、アロー関数の場合は定義された場所の外側のスコープ(周囲のコンテキスト)からthisを受け継ぎます。これにより、ネストした関数の中でthisが意図しない値を指してしまうトラブルを簡単に回避