Przekazywanie funkcji do innej funkcji

0

Witam,

Chciałbym napisać funkcję do testowania innych funkcji (wykonuję wielokrotnie wyliczenie czasu działania dla różnych funkcji).
No i powiedzmy że mam 3 funkcje znajdowania liczb pierwszych

static bool Prime(int N){
	// ciało funkcji
return true/false
}
static bool Prime2(int N){
	// ciało funkcji
return true/false
}
static bool Prime3(int N){
	// ciało funkcji
return true/false
}

Mam też funkcję

static void testuj(funkcja, int N)
{
	Stopwatch Stoper = new Stopwatch();
	Stoper.Start();
	funkcja(N);
	Stoper.Stop();
	Console.WriteLine("Czas = {0}",Stoper.ElapsedMilliseconds);
}

I jakiś pseudo MAIN

static void Main()
{
 int N=1000;
testuj(Prime,N);
testuj(Prime2,N);
testuj(Prime3,N);

}

Moje pytanie brzmi w jaki sposób przekazać funkcje "Prime" do "testuj" tak żeby móc ją później w tym "testuj" wywołać.
Czyli zależy mi żebym w zależności od przekazanej funkcji wykonał się główny kod funkcji testującej, podstawiła się funkcja testowana, a następnie wykonał się dalszy kod funkcji testującej.

0

Najlepiej byłoby każdą z tych trzech metod wydzielić do odrębnej klasy implementującej wspólny interfejs - na zasadzie:

interface PrimeTesterInterface {
  bool isPrime(int n);
}

class FirstPrimeTester: PrimeTesterInterface {
  /* ... */
}

class SecondPrimeTester: PrimeTesterInterface {
  /* ... */
}

/* ... */
3

Użyj delegatu Func<int, bool> .

static void testuj(Func<int, bool> funkcja, int N)
{
    Stopwatch Stoper = new Stopwatch();
    Stoper.Start();
    funkcja(N);
    Stoper.Stop();
    Console.WriteLine("Czas = {0}",Stoper.ElapsedMilliseconds);
}
3
static void testuj(Func<int, bool> funkcja, int N)

1 użytkowników online, w tym zalogowanych: 0, gości: 1