LoginSignup
6
6

More than 5 years have passed since last update.

シーケンスに要素を連結する

Last updated at Posted at 2014-05-13

(๑╹ω╹)<欲しいなあ

と思ったので。

yield return を使用するパターン

Program.cs
/// <summary>
/// シーケンスの前方に要素を連結します
/// </summary>
/// <typeparam name="TSource">入力シーケンスの要素の型</typeparam>
/// <param name="first">連結する最初の要素</param>
/// <param name="second">最初の要素に連結するシーケンス</param>
/// <returns>2つの入力シーケンスの連結された要素が格納されている System.Collections.Generic.IEnumerable&lt;T&gt;</returns>
public static IEnumerable<TSource> Concat<TSource>( this TSource first, IEnumerable<TSource> second )
{
    yield return first;
    foreach ( var _second in second ) { yield return _second; }
}
Program.cs
/// <summary>
/// シーケンスの後方に要素を連結します
/// </summary>
/// <typeparam name="TSource">入力シーケンスの要素の型</typeparam>
/// <param name="first">連結する最初のシーケンス</param>
/// <param name="second">最初のシーケンスに連結する要素</param>
/// <returns>2つの入力シーケンスの連結された要素が格納されている System.Collections.Generic.IEnumerable&lt;T&gt;</returns>
public static IEnumerable<TSource> Concat<TSource>( this IEnumerable<TSource> first, TSource second )
{
    foreach ( var _first in first ) { yield return _first; }
    yield return second;
}

Enumerable.Concat を使用するパターン

Program.cs
/// <summary>
/// シーケンスの前方に要素を連結します
/// </summary>
/// <typeparam name="TSource">入力シーケンスの要素の型</typeparam>
/// <param name="first">連結する最初の要素</param>
/// <param name="second">最初の要素に連結するシーケンス</param>
/// <returns>2つの入力シーケンスの連結された要素が格納されている System.Collections.Generic.IEnumerable&lt;T&gt;</returns>
public static IEnumerable<TSource> Concat<TSource>( this TSource first, IEnumerable<TSource> second )
{
    return Enumerable.Concat( new[ ] { first }, second );
}
Program.cs
/// <summary>
/// シーケンスの後方に要素を連結します
/// </summary>
/// <typeparam name="TSource">入力シーケンスの要素の型</typeparam>
/// <param name="first">連結する最初のシーケンス</param>
/// <param name="second">最初のシーケンスに連結する要素</param>
/// <returns>2つの入力シーケンスの連結された要素が格納されている System.Collections.Generic.IEnumerable&lt;T&gt;</returns>
public static IEnumerable<TSource> Concat<TSource>( this IEnumerable<TSource> first, TSource second )
{
    return Enumerable.Concat( first, new[ ] { second } );
}

エラーチェックがありませんのでご注意下さい。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6