6

Ruby の時間を C#に変換しようとしていますが、今行き詰まっています。

これが私の試みです:

public static class Extensions
{
    public static void Times(this Int32 times, WhatGoesHere?)
    {
        for (int i = 0; i < times; i++)
            ???
    }
}

私は C# を初めて使用しますが、おそらくこれは簡単なはずであり、Extensionmethods を使用したいことはわかっています。しかし、C# では関数は「ファースト クラス」ではないため、今のところ行き詰まっています。

では、WhatGoesHere のどのパラメーター タイプを使用すればよいでしょうか。

4

1 に答える 1

5

アクションタイプを使用できます:

public static class Extensions
{
    public static void Times(this Int32 times, Action<Int32> action)
    {
        for (int i = 0; i < times; i++)
            action(i);
    }
}

class Program
{
    delegate void Del();

    static void Main(string[] args)
    {
        5.Times(Console.WriteLine);
        // or
        5.Times(i => Console.WriteLine(i));
    }
}

デリゲートについては、こちらもご覧ください。

于 2012-06-12T10:02:37.903 に答える