N288 Delegates (Leg med Lambda)
Du skal skabe en tom konsol og kopiere følgende kode ind i program.cs
using System;
namespace App2
{
internal class Program
{
static void Main(string[] args)
{
Test1();
Test2("a");
Test3("a", 1);
Test4();
Test5("a");
Console.WriteLine(Test6());
Console.WriteLine(Test7());
Console.WriteLine(Test8(1));
Console.WriteLine(Test9(1, 1));
Console.WriteLine(Test10(1));
}
static void Test1()
{
Console.WriteLine("I Test 1 - a");
Console.WriteLine("I Test 1 - b");
Console.WriteLine("I Test 1 - c");
}
static void Test2(string txt)
{
Console.WriteLine($"I Test 2 med {txt} - a");
Console.WriteLine($"I Test 2 med {txt} - b");
Console.WriteLine($"I Test 2 med {txt} - c");
}
static void Test3(string txt, int n)
{
Console.WriteLine($"I Test 3 med {txt} og {n} - a");
Console.WriteLine($"I Test 3 med {txt} og {n} - b");
Console.WriteLine($"I Test 3 med {txt} og {n} - c");
}
static void Test4()
{
Console.WriteLine($"I Test 4");
}
static void Test5(string txt)
{
Console.WriteLine($"I Test 5 med {txt}");
}
static int Test6()
{
Console.WriteLine($"I Test 6");
return 1;
}
static int Test7()
{
return 1;
}
static int Test8(int a)
{
return a;
}
static int Test9(int a, int b)
{
return a + b;
}
static bool Test10(int a)
{
return a < 10;
}
}
}
Prøv at afvikle koden og bemærk hvordan alle metoder bliver kaldt.
Din opgave er nu at udmarkere alle Testxx-metoder og skrive dem som lambda-metoder i stedet direkte i Main. prøv at skrive lambda både i uforkortet og forkortet version (se evt løsning for inspiration). Her er et eksempel på løsning af Test1()-metoden:
using System;
namespace App2
{
internal class Program
{
static void Main(string[] args)
{
Action Test1 = () =>
{
Console.WriteLine("I Test 1 - a");
Console.WriteLine("I Test 1 - b");
Console.WriteLine("I Test 1 - c");
};
Test1();
Test2("a");
Test3("a", 1);
Test4();
Test5("a");
Console.WriteLine(Test6());
Console.WriteLine(Test7());
Console.WriteLine(Test8(1));
Console.WriteLine(Test9(1, 1));
Console.WriteLine(Test10(1));
}
//static void Test1()
//{
// Console.WriteLine("I Test 1 - a");
// Console.WriteLine("I Test 1 - b");
// Console.WriteLine("I Test 1 - c");
//}
static void Test2(string txt)
{
Console.WriteLine($"I Test 2 med {txt} - a");
Console.WriteLine($"I Test 2 med {txt} - b");
Console.WriteLine($"I Test 2 med {txt} - c");
}
static void Test3(string txt, int n)
{
Console.WriteLine($"I Test 3 med {txt} og {n} - a");
Console.WriteLine($"I Test 3 med {txt} og {n} - b");
Console.WriteLine($"I Test 3 med {txt} og {n} - c");
}
static void Test4()
{
Console.WriteLine($"I Test 4");
}
static void Test5(string txt)
{
Console.WriteLine($"I Test 5 med {txt}");
}
static int Test6()
{
Console.WriteLine($"I Test 6");
return 1;
}
static int Test7()
{
return 1;
}
static int Test8(int a)
{
return a;
}
static int Test9(int a, int b)
{
return a + b;
}
static bool Test10(int a)
{
return a < 10;
}
}
}
Klik for at se et forslag til en løsning
using System;
namespace App2
{
internal class Program
{
static void Main(string[] args)
{
Action Test1 = () =>
{
Console.WriteLine("I Test 1 - a");
Console.WriteLine("I Test 1 - b");
Console.WriteLine("I Test 1 - c");
};
Test1();
//Action<string> Test2 = (string txt) => {
// Console.WriteLine($"I Test 2 med {txt} - a");
// Console.WriteLine($"I Test 2 med {txt} - b");
// Console.WriteLine($"I Test 2 med {txt} - c");
//};
Action<string> Test2 = txt =>
{
Console.WriteLine($"I Test 2 med {txt} - a");
Console.WriteLine($"I Test 2 med {txt} - b");
Console.WriteLine($"I Test 2 med {txt} - c");
};
//Action<string, int> Test3 = (string txt, int n) => {
// Console.WriteLine($"I Test 3 med {txt} og {n} - a");
// Console.WriteLine($"I Test 3 med {txt} og {n} - b");
// Console.WriteLine($"I Test 3 med {txt} og {n} - c");
//};
Action<string, int> Test3 = (txt, n) =>
{
Console.WriteLine($"I Test 3 med {txt} og {n} - a");
Console.WriteLine($"I Test 3 med {txt} og {n} - b");
Console.WriteLine($"I Test 3 med {txt} og {n} - c");
};
//Action Test4 = () => {
// Console.WriteLine($"I Test 4");
//};
Action Test4 = () => Console.WriteLine($"I Test 4");
//Action<string> Test5 = (string txt) => {
// Console.WriteLine($"I Test 2 med {txt}");
//};
Action<string> Test5 = txt => Console.WriteLine($"I Test 5 med {txt}");
Func<int> Test6 = () =>
{
Console.WriteLine($"I Test 6");
return 1;
};
//Func<int> Test7 = () => { return 1; };
Func<int> Test7 = () => 1;
//Func<int, int> Test8 = (int a ) => { return a; };
Func<int, int> Test8 = a => a;
//Func<int, int, int> Test9 = (int a, int b) => { return a + b; };
Func<int, int, int> Test9 = (a, b) => a + b;
//Predicate<int> Test10 = (int a) => { return a < 10; };
Predicate<int> Test10 = a => a < 10;
//Func<int, bool> Test10 = a => a < 10;
Test2("a");
Test3("a", 1);
Test4();
Test5("a");
Console.WriteLine(Test6());
Console.WriteLine(Test7());
Console.WriteLine(Test8(1));
Console.WriteLine(Test9(1, 1));
Console.WriteLine(Test10(1));
}
static void Test1()
{
Console.WriteLine("I Test 1 - a");
Console.WriteLine("I Test 1 - b");
Console.WriteLine("I Test 1 - c");
}
static void Test2(string txt)
{
Console.WriteLine($"I Test 2 med {txt} - a");
Console.WriteLine($"I Test 2 med {txt} - b");
Console.WriteLine($"I Test 2 med {txt} - c");
}
static void Test3(string txt, int n)
{
Console.WriteLine($"I Test 3 med {txt} og {n} - a");
Console.WriteLine($"I Test 3 med {txt} og {n} - b");
Console.WriteLine($"I Test 3 med {txt} og {n} - c");
}
static void Test4()
{
Console.WriteLine($"I Test 4");
}
static void Test5(string txt)
{
Console.WriteLine($"I Test 5 med {txt}");
}
static int Test6()
{
Console.WriteLine($"I Test 6");
return 1;
}
static int Test7()
{
return 1;
}
static int Test8(int a)
{
return a;
}
static int Test9(int a, int b)
{
return a + b;
}
static bool Test10(int a)
{
return a < 10;
}
}
}