static void Main(string[] args) { //kalder metoden kvadrat med værdien 2 (OBS: se metoden kvadrat længere nede i koden) Console.WriteLine($"Kvadrat : {kvadrat(2)}"); //delegaten delKvadrat peger på metoden kvadrat delInt1par delKvadrat = kvadrat; //kalder metoden kvadrat gennem delegaten delKvadrat Console.WriteLine($"delKvadrat : {delKvadrat(2)}"); //anonym metode som gør det samme som kvadrat metoden //og som tildeles delegaten delKvadratAnonym delInt1par delKvadratAnonym = delegate(int x) { return(x * x); }; Console.WriteLine("delkvadrat : " + delKvadratAnonym(2)); //anonym metode skrevet via Lamda syntax og som tildeles delegaten //delKvadratLamda delInt1par delKvadratLamda = x => x * x; Console.WriteLine($"delKvadrat lamda : {delKvadratLamda(2)}"); //Istedet for at bruge min egen delegate delInt1par kan jeg bruge //en forud defineret delegate Func, så derfor skal jeg bruge den. Func <int, int> funcDelegate = x => x * x; Console.WriteLine($"funcDelegate: {funcDelegate(2)}"); //Her skal du selv arbejde med delegates, anonyme metoder og Lamda udtryk //Opgave 1: // Test dine kald til metoder og delegates vha. Console.Writeline //-kod en delegate som kan pege på metoden "gtrThan100" : private static bool gtrThan100(int x) //-brug denne delegate og få den til at pege på metoden gtrThan100 //-brug delegaten til at kode en anonym metode som gør det samme som metoden gtrThan100 //-brug delegaten til at kode et lambda expression som gør det samme som gtrThan100 //-hvilken predefineret delagate kan du bruge istedet for din egen delegate -prøv at bruge den med et Lamda expression //Opgave2: //gør det samme som ovenstående opgave , nu bare med metoden "gange": private static int gange(int x, int y) }
static void Main(string[] args) { //kalder metoden kvadrat med værdien 2 (OBS: se metoden kvadrat længere nede i koden) Console.WriteLine($"Kvadrat : {kvadrat(2)}"); //delegaten delKvadrat peger på metoden kvadrat delInt1par delKvadrat = kvadrat; //kalder metoden kvadrat gennem delegaten delKvadrat Console.WriteLine($"delKvadrat : {delKvadrat(2)}"); //anonym metode som gør det samme som kvadrat metoden //og som tildeles delegaten delKvadratAnonym delInt1par delKvadratAnonym = delegate(int x) { return(x * x); }; Console.WriteLine("delkvadrat : " + delKvadratAnonym(2)); //anonym metode skrevet via Lamda syntax og som tildeles delegaten //delKvadratLamda delInt1par delKvadratLamda = x => x * x; Console.WriteLine($"delKvadrat lamda : {delKvadratLamda(2)}"); //Istedet for at bruge min egen delegate delInt1par kan jeg bruge //en forud defineret delegate Func, så derfor skal jeg bruge den. Func <int, int> funcDelegate = x => x * x; Console.WriteLine($"funcDelegate: {funcDelegate(2)}"); //Her skal du selv arbejde med delegates, anonyme metoder og Lamda udtryk //Opgave 1: // Test dine kald til metoder og delegates vha. Console.Writeline //-kod en delegate som kan pege på metoden "gtrThan100" : private static bool gtrThan100(int x) //-brug denne delegate og få den til at pege på metoden gtrThan100 //-brug delegaten til at kode en anonym metode som gør det samme som metoden gtrThan100 //-brug delegaten til at kode et lambda expression som gør det samme som gtrThan100 //-hvilken predefineret delagate kan du bruge istedet for din egen delegate -prøv at bruge den med et Lamda expression delBool1par delGtrThan100 = gtrThan100; Console.WriteLine("99 larger than 100?: " + delGtrThan100(99)); delBool1par delGtrThan100Annonymous = delegate(int x) { return(x > 100); }; Console.WriteLine("99 larger than 100? (annonym): " + delGtrThan100Annonymous(99)); delBool1par delGtrThan100Lamda = x => x > 100; Console.WriteLine("99 larger than 100? (lamda): " + delGtrThan100Lamda(99)); Func <int, bool> funcGtrThan100 = x => x > 100; Console.WriteLine("99 larger than 100? (func): " + funcGtrThan100(99)); //Opgave2: //gør det samme som ovenstående opgave , nu bare med metoden "gange": private static int gange(int x, int y) delInt2par delGange = gange; Console.WriteLine("6*5 = " + delGange(6, 5)); delInt2par delGangeAno = delegate(int x, int y) { return(x * y); }; Console.WriteLine("Ano: " + delGangeAno(6, 5)); delInt2par delGangeLamda = (x1, y1) => x1 * y1; Console.WriteLine("Lamda: " + delGangeLamda(6, 5)); Func <int, int, int> funcGange = (x1, y1) => x1 * y1; Console.WriteLine("Func: " + funcGange(6, 5)); Console.ReadLine(); }
static void Main(string[] args) { //kalder metoden kvadrat med værdien 2 (OBS: se metoden kvadrat længere nede i koden) Console.WriteLine($"Kvadrat : {kvadrat(2)}"); //delegaten delKvadrat peger på metoden kvadrat. Smider en metode ind i min delegate. delInt1par delKvadrat = kvadrat; delBool1par delgrtThan100 = gtrThan100; Console.WriteLine($"delgtrThan100 : {delgrtThan100(10)}"); Console.WriteLine($"delgtrThan100 : {delgrtThan100(105)}"); delInt2par delGange = gange; Console.WriteLine($"delGange : {delGange(2, 5)}"); Console.WriteLine($"delGange : {delGange(2, 2)}"); //kalder metoden kvadrat gennem delegaten delKvadrat Console.WriteLine($"delKvadrat : {delKvadrat(2)}"); //anonym metode som gør det samme som kvadrat metoden //og som tildeles delegaten delKvadratAnonym. Det er en anonym metode alt det til højre for = og inde i kroppen. delInt1par delKvadratAnonym = delegate(int x) { return(x * x); }; Console.WriteLine("delkvadratAnonym : " + delKvadratAnonym(2)); delBool1par delgrtThan100Anonym = delegate(int x) { return(x > 100); }; Console.WriteLine($"delgrtThan100Anonym : {delgrtThan100Anonym(10)}"); Console.WriteLine($"delgrtThan100Anonym : {delgrtThan100Anonym(105)}"); delInt2par delGangeAnonym = delegate(int x, int y) { return(x * y); }; Console.WriteLine($"delGangeAnonym : {delGangeAnonym(2, 5)}"); Console.WriteLine($"delGangeAnonym : {delGangeAnonym(2, 2)}"); //anonym metode skrevet via Lamda syntax og som tildeles delegaten //delKvadratLamda delInt1par delKvadratLamda = x => x * x; //x => x*x er min anonyme metode. Console.WriteLine($"delKvadrat lamda : {delKvadratLamda(2)}"); delBool1par delgrtThan100Lambda = x => x > 100; Console.WriteLine($"delgrtThan100 lambde : {delgrtThan100Lambda(10)}"); Console.WriteLine($"delgrtThan100 lambde : {delgrtThan100Lambda(105)}"); delInt2par delGangeLambda = (x, y) => x * y; Console.WriteLine($"delGangeLambda : {delGangeLambda(2,5)}"); Console.WriteLine($"delGangeLambda : {delGangeLambda(2, 2)}"); //Istedet for at bruge min egen delegate delInt1par kan jeg bruge //en forud defineret delegate Func, så derfor skal jeg bruge den. Func <int, int> funcDelegate = x => x * x; Console.WriteLine($"funcDelegate: {funcDelegate(2)}"); Func <int, bool> funcDelegateGrtThan100 = x => x > 100; Console.WriteLine($"funcDelegate grt than 100: {funcDelegateGrtThan100(10)}"); Console.WriteLine($"funcDelegate grt than 100: {funcDelegateGrtThan100(105)}"); Func <int, int, int> funcDelegateGange = (x, y) => x * y; Console.WriteLine($"funcDelegate: {funcDelegateGange(2,5)} "); Console.WriteLine($"funcDelegate: {funcDelegateGange(2,2)} "); //Her skal du selv arbejde med delegates, anonyme metoder og Lamda udtryk //Opgave 1: // Test dine kald til metoder og delegates vha. Console.Writeline //-kod en delegate som kan pege på metoden "gtrThan100" : private static bool gtrThan100(int x) //-brug denne delegate og få den til at pege på metoden gtrThan100 //-brug delegaten til at kode en anonym metode som gør det samme som metoden gtrThan100 //-brug delegaten til at kode et lambda expression som gør det samme som gtrThan100 //-hvilken predefineret delagate kan du bruge istedet for din egen delegate -prøv at bruge den med et Lamda expression //Opgave2: //gør det samme som ovenstående opgave , nu bare med metoden "gange": private static int gange(int x, int y) Console.ReadLine(); }