ゲーマーときどきエンジニア

基本ゲーム記事を書いて、ときどき考えを発信するエンジニアのブログです!

【C#】【LINQ】指定した範囲内の整数のシーケンスを作成できるRangeメソッドについて解説します

こんにちは。たいら(@tairaengineer2)です。
この記事では、C#LINQRangeメソッドについて解説します。

スポンサーリンク

 

前提条件

この記事では、Visual Studio 2017 Communityを使っています。
インストールの仕方は、下の記事をご参考ください。

www.tairax.com

Rangeメソッドとは

Rangeメソッドとは、引数で指定された数から連続した数の分だけのシーケンスを作ることができるメソッドです。

Enumerable.Range(Int32, Int32) メソッド
指定した範囲内の整数のシーケンスを生成します。

Enumerable.Range(Int32, Int32) メソッド (System.Linq) | Microsoft Docsから引用させて頂きました

定義は以下です。

public static System.Collections.Generic.IEnumerable<int> Range (int start, int count);

このメソッドはusingは

using System.Linq;

を使います。

Rangeメソッドの使い方は以下になります。

IEnumerable<int> sampleRange = Enumerable.Range(0, 5);

それぞれの意味は、以下です。

f:id:Tairax:20200407161711p:plain

第二引数のシーケンスを取得する数(上記の例だと、5の部分)には0以上の数字を入れる必要があります。
なぜならマイナスの数値を入力すると、ArgumentOutOfRangeExceptionという例外が発生するからです。

では、次の章でRangeメソッドを使ってみます。

解説で使うC#プログラムの概要

以下2つのパターンでRangeメソッドを使います。

  1. 0を始点として9個分のシーケンスを作成
  2. 30を始点として4個分のシーケンスを作成

それぞれのシーケンスをリストにして、リストの中身をコンソールに表示させます。

コンソールプロジェクトを作成するやり方は下の記事をご参考ください。

www.tairax.com

プログラムを作成したあと、ビルドをするやり方はこちらの記事をご参考ください。

www.tairax.com

C#サンプルコード

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp1
{
    /// <summary>
    /// Rangeメソッドサンプル
    /// </summary>
    class Program
    {
        /// <summary>
        /// メイン
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // 0を始点として9個分のシーケンスを作成し、コンソールに表示する
            Console.WriteLine("■0を始点として9個分のシーケンスを作成");
            IEnumerable<int> rangeList1 = Enumerable.Range(0, 10);
            rangeList1.ToList().ForEach(number => Console.WriteLine(number));

            // 30を始点として4個分のシーケンスを作成し、コンソールに表示する
            Console.WriteLine("■30を始点として4個分のシーケンスを作成");
            IEnumerable<int> rangeList2 = Enumerable.Range(30, 4);
            rangeList2.ToList().ForEach(number => Console.WriteLine(number));
        }
    }
}

リスト化しているToListメソッドについては、こちらの記事をご参考ください。

www.tairax.com

ForEachメソッドについては、こちらの記事をご参考ください。

www.tairax.com

実行結果

f:id:Tairax:20200407185555p:plain

■0を始点として9個分のシーケンスを作成
0
1
2
3
4
5
6
7
8
9
■30を始点として4個分のシーケンスを作成
30
31
32
33
続行するには何かキーを押してください . . .

指定した通りのシーケンスを取得して表示することができました!

 

スポンサーリンク

 

まとめ:Rangeメソッドを使ってみよう!

以上が指定した範囲内のシーケンスを取得できるRangeメソッドの解説です。
まとめなので、もう1度Rangeメソッドの使い方を載せておきます。

f:id:Tairax:20200407161711p:plain

Rangeメソッドは、連続した数字のリストを作るときにとても便利なので、ぜひ使ってみてください!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

ほかにもC#解説記事を書いてます。
よければご参考ください。

【C#】【LINQ】Anyメソッドについて解説します

【C#】【LINQ】Aggregateメソッドの使い方を解説します

今までブログで解説したC#の解説まとめ記事はこちらをご参考ください。

【C#】ブログで書いた文法記事のまとめ