Skillnad mellan versioner av "Lambdauttryck, LINQ och Delegater"

Från Mathonline
Hoppa till: navigering, sök
(Skapade sidan med '__NOTOC__ {| border="0" cellspacing="0" cellpadding="0" height="30" width="100%" | style="border-bottom:1px solid #797979" width="5px" |   {{Not selected tab|Lektion 26...')
 
m
 
(22 mellanliggande versioner av samma användare visas inte)
Rad 2: Rad 2:
 
{| border="0" cellspacing="0" cellpadding="0" height="30" width="100%"
 
{| border="0" cellspacing="0" cellpadding="0" height="30" width="100%"
 
| style="border-bottom:1px solid #797979" width="5px" |  
 
| style="border-bottom:1px solid #797979" width="5px" |  
{{Not selected tab|[[Lektion 26 (Csharp 2)|Lektion 26]]}}
+
{{Not selected tab|[[Lektion 27 (Csharp 2)|Lektion 27]]}}
{{Selected tab|[[3.8 Generiska metoder|Genomgång]]}}
+
{{Selected tab|[[Lambdauttryck, LINQ och Delegater|Genomgång]]}}
{{Not selected tab|[[Övningar 26 (Csharp 2)|Övningar]]}}
+
{{Not selected tab|[[Övningar 27 (Csharp 2)|Övningar]]}}
 
| style="border-bottom:1px solid #797979"  width="100%"|  
 
| style="border-bottom:1px solid #797979"  width="100%"|  
 
|}
 
|}
  
  
= <b><span style="color:#931136">Generics</span></b> =
+
= <b><span style="color:#931136">Vad är Lambdauttryck?</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
[[Image: Generics.jpg]]
+
[[Image: Lambdauttryck.jpg]]
  
 
<big>
 
<big>
<b><span style="color:red">Generics</span></b> omfattar generiska klasser, metoder, operatorer, interfaces, properties och delegates.
+
<b><span style="color:red">Lambdauttryck</span></b> har inga namn. Därför kallas de även <b><span style="color:red">anonyma funktioner</span></b>.
  
Den variabla datatypen T kallas för <b><span style="color:red">typ-parametern</span></b> och är en platshållare för en datatyp.
+
Lambdauttryck anropas på samma ställe som de definieras, vilket leder till en stor effektivitet.
  
Typ-parametern T skrivs efter typnamnet så här: <b><span style="color:red">TypeName <T></span></b>, t.ex. <b><span style="color:red">G_out <T></span></b>.
+
<u>Motivationen:</u>
 +
 
 +
Den traditionella kodningen av <b>korta</b> funktioner som metoder, dvs som medlemmar i en klass,
 +
 
 +
medför en overhead av både utvecklings- och exekveringstid, t.ex. parameteröverföringen.
 
</big>
 
</big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Klassen Output</span></b> =
+
= <b><span style="color:#931136">Programmet Lambda</span></b> =
 
<div class="ovnC">
 
<div class="ovnC">
[[Image: Output.jpg]]
+
[[Image: Lambda.jpg]]
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Programmet GenericTest</span></b> =
+
= <b><span style="color:#931136">Körexempel</span></b> =
 
<div class="ovnA">
 
<div class="ovnA">
[[Image: GenericTest.jpg]]
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: LambdaKorex.jpg]]</div>
 +
</div>
  
<big>
 
Den generiska metoden <b><span style="color:red">G_out()</span></b> är definierad i klassen Output.
 
  
Den generiska metoden <b><span style="color:red">G_sort()</span></b> är definierad i klassen Bubble.
+
= <b><span style="color:#931136">Vad är LINQ?</span></b> =
</big>
+
<div class="ovnC">
 +
[[Image: LINQ.jpg]]
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Körexempel</span></b> =
+
= <b><span style="color:#931136">Programmet Delegate</span></b> =
 
<div class="ovnA">
 
<div class="ovnA">
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: GenericTestKorex.jpg]]</div>
+
[[Image: Delegate.jpg]]
 +
 
 +
<big>
 +
En <b><span style="color:red">delegat</span></b> skapas i två steg:
 +
 
 +
1) Utanför Main() skapas en ny datatyp av typen <b><span style="color:red">delegate</span></b>. Ex.: <b>delegate void Dtype(string t);</b>
 +
 
 +
2) I Main() deklareras en delegat d till den nya delegattypen Dtype. Ex.: <b>Dtype d;</b>
 +
 
 +
Sedan används delegaten d för att namnge ett lambdauttryck (anonym funktion).
 +
 
 +
Sist anropas den anonyma funktionen med delegatens namn.
 +
 
 +
Namngivningen kan bli nödvändigt, när delegater skickas som parametrar till andra metoder.
 +
</big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Klassen Bubble</span></b> =
+
= <b><span style="color:#931136">Körexempel</span></b> =
<div class="ovnC">
+
<div class="ovnA">
[[Image: Bubble.jpg]]
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: DelegateKorexa.jpg]]</div>
 
</div>
 
</div>
  
 
<br>
 
<br>
  
= <b><span style="color:#931136">Läs om generiska metoder och bubbelsortering i kursboken på sid 153-157.</span></b> =
+
= <b><span style="color:#931136">Läs om Lambdauttryck, LINQ och Delegater i [http://www.mathonline.se/Progr_2/Boken%20Progr_2_Cs.pdf <span style="color:blue">kursboken</span>] på sid 178-180.</span></b> =
  
  
Rad 80: Rad 98:
  
  
[[Matte:Copyrights|Copyright]] © 2021 [https://www.techpages.se <b><span style="color:blue">TechPages AB</span></b>]. All Rights Reserved.
+
[[Matte:Copyrights|Copyright]] © 2021 TechPages AB. All Rights Reserved.

Nuvarande version från 27 november 2022 kl. 18.37

       Lektion 27          Genomgång          Övningar      


Vad är Lambdauttryck?

Lambdauttryck.jpg

Lambdauttryck har inga namn. Därför kallas de även anonyma funktioner.

Lambdauttryck anropas på samma ställe som de definieras, vilket leder till en stor effektivitet.

Motivationen:

Den traditionella kodningen av korta funktioner som metoder, dvs som medlemmar i en klass,

medför en overhead av både utvecklings- och exekveringstid, t.ex. parameteröverföringen.


Programmet Lambda

Lambda.jpg


Körexempel

LambdaKorex.jpg


Vad är LINQ?

LINQ.jpg


Programmet Delegate

Delegate.jpg

En delegat skapas i två steg:

1) Utanför Main() skapas en ny datatyp av typen delegate. Ex.: delegate void Dtype(string t);

2) I Main() deklareras en delegat d till den nya delegattypen Dtype. Ex.: Dtype d;

Sedan används delegaten d för att namnge ett lambdauttryck (anonym funktion).

Sist anropas den anonyma funktionen med delegatens namn.

Namngivningen kan bli nödvändigt, när delegater skickas som parametrar till andra metoder.


Körexempel

DelegateKorexa.jpg


Läs om Lambdauttryck, LINQ och Delegater i kursboken på sid 178-180.


 










Copyright © 2021 TechPages AB. All Rights Reserved.