Help us understand the problem. What is going on with this article?

いろいろな方法で1から100までを出力する

More than 5 years have passed since last update.

C#で1から100までを出力する方法をいろいろ考えてみた。
あくまで個人的メモです。

1. for 文

一番シンプルな方法

for (int i = 1; i <= 100; i++)
{
    Console.WriteLine(i);
}

2. foreach 文

こっちのほうがパッと見はわかりやすい

foreach(int i in Enumerable.Range(1, 100))
{
    Console.WriteLine(i);
}

2-1. foreach 文 (yield return)

Enumerable.Rangeではなく自前のメソッドを利用する方法

IEnumerable<int> GetValues()
{
    int i = 0;
    while (++i <= 100)
    {
        yield return i;
    }
}
foreach (int i in GetValues())
{
    Console.WriteLine(i);
}

3. while 文

あんまり使わないかな

int i = 0;
while (++i <= 100)
{
    Console.WriteLine(i);
}

3-1. do while 文

3同様あまり使用しない

int i = 0;
do
{
    Console.WriteLine(++i);
}
while (i < 100);

4. List<T>.ForEach

すっきり

Enumerable.Range(1, 100).ToList().ForEach(i => Console.WriteLine(i));

5. Action<T>

C#だと長ったらしくなるなぁ

Action<int> Foo = null;
Foo = i =>
    {
        if (0 < i)
        {
            Console.WriteLine(i);
        }

        if (i < 100)
        {
            Foo(++i);
        }
    };
Foo(1);

6. goto文

使いたくはない

int i = 1;
start:
Console.WriteLine(i);
if (++i <= 100)
{
    goto start;
}

7. 再帰処理

void Hoge(int i)
{
    if (0 < i)
    {
        Console.WriteLine(i);
    }

    if (i < 100)
    {
        Hoge(++i);
    }
}
Hoge(1);

とりあえずパッとおもい浮かんだものを書いてみた。
いろいろやり方はあるけど、単一処理ならList<T>.ForEachがシンプルかな?

muro
自分が記憶喪失になったとき用に書きます。なので当たり前な情報も書きます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away