Skip to content

EN CSharp Keyword yield

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C#: yield

Handbook C# · Practical Guide

Creates an iterator method: yield return issues the next element; yield break ends the sequence. The code is executed while iterating.

Simple example (Example.cs)

Save this example separately as Example.cs. Run it independently of the other examples on this page.

Example.cs:

// PROJECT-EXAMPLE
System.Collections.Generic.IEnumerable<int> Numbers()
{
    yield return 1;
    yield return 2;
}
foreach (int value in Numbers()) System.Console.WriteLine(value);

Result:

1
2

Syntax

yield return expression; / yield break;

Example 1: simple form

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        foreach (int value in Sequences.Count(3)) Console.WriteLine(value);
    }
}
public static class Sequences { public static IEnumerable<int> Count(int count) { for (int i = 0; i < count; i++) yield return i; yield break; } }

Example 2: another practical form

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        await foreach (int value in Sequences.CountAsync(3)) Console.WriteLine(value);
    }
}
public static class Sequences { public static async IAsyncEnumerable<int> CountAsync(int count) { for (int i = 0; i < count; i++) { await Task.Delay(1); yield return i; } } }

Official source: Microsoft Learn.

Clone this wiki locally