2012-06-12 12 views
6

Sto cercando di convertire Ruby's time in C#, ma ora sono bloccato.Converti i tempi di Ruby in C#

Ecco la mia prova:

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

Sono nuovo di C#, e forse questo uno dovrebbe essere facile, e so che voglio usare Extensionmethods. Ma dal momento che le funzioni non sono "di prima classe" in C#, per ora sono bloccato.

Quindi, che tipo di parametro dovrei usare per WhatGoesHere?

risposta

5

È possibile utilizzare il tipo di Action:

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)); 
    } 
} 

hanno anche un aspetto here per conoscere i delegati.

+0

Grazie! Non conoscevo i delegati. –

+0

Nessun problema ..... – sloth