Skillnad mellan versioner av "Delegater, LINQ och Metodgrupper"

Från Mathonline
Hoppa till: navigering, sök
m
m
 
(22 mellanliggande versioner av samma användare visas inte)
Rad 9: Rad 9:
  
  
= <b><span style="color:#931136">Vad är Lambdauttryck?</span></b> =
+
= <b><span style="color:#931136">Vad är en delegat?</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
[[Image: Lambdauttryck.jpg]]
 
 
 
<big>
 
<big>
Den traditionella kodningen av <b>korta</b> funktioner som metoder, dvs som medlemmar i en klass, medför en overhead av exekveringstid.
+
<b><span style="color:red">Delegater</span></b> är referenser till anonyma funktioner (lambdauttryck).
  
<b><span style="color:red">Lambdauttryck</span></b> är anonyma funktioner som slipper exekveringstiden för parameteröverföring.
+
Med delegater får lambdauttryck namn som kan användas för att referera till dem.
 
</big>
 
</big>
 +
 +
[[Image: Delegate_Def.jpg]]
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Programmet Lambda</span></b> =
+
= <b><span style="color:#931136">Programmet DelegateParam</span></b> =
 
<div class="ovnC">
 
<div class="ovnC">
[[Image: Lambda.jpg]]
+
[[Image: DelegateParam.jpg]]
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Körexempel</span></b> =
+
= <b><span style="color:#931136">Programmet CountLINQ</span></b> =
<div class="ovnA">
+
<big><big>Samma sak som den egendefinierade metoden <b>MyCount()</b> ovan, gör LINQ-metoden <b>Count()</b> nedan:
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: LambdaKorex.jpg]]</div>
+
</div>
+
 
+
  
= <b><span style="color:#931136">Vad är LINQ?</span></b> =
+
Räknar antalet nollor, negativa och positiva tal i en array. Här skickas lambdauttryck direkt som parameter.</big></big>
 
<div class="ovnC">
 
<div class="ovnC">
[[Image: LINQ.jpg]]
+
[[Image: CountLINQ.jpg]]
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Programmet Delegate</span></b> =
+
= <b><span style="color:#931136">Programmet WriteLineOverr</span></b> =
 
<div class="ovnA">
 
<div class="ovnA">
[[Image: Delegate.jpg]]
+
[[Image: WriteLineOverr.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">Körexempel</span></b> =
+
= <b><span style="color:#931136">Programmet MethodGroup</span></b> =
 
<div class="ovnA">
 
<div class="ovnA">
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: DelegateKorexa.jpg]]</div>
+
[[Image: MethodGroup.jpg]]
 
</div>
 
</div>
  
 
<br>
 
<br>
  
= <b><span style="color:#931136">Läs om Lambdauttryck, LINQ och Delegater i kursboken på sid 158-160.</span></b> =
+
= <b><span style="color:#931136">Läs om Delegater, LINQ och Metodgrupper i [http://www.mathonline.se/Progr_2/Boken%20Progr_2_Cs.pdf <span style="color:blue">kursboken</span>] på sid 180-185.</span></b> =
  
  
Rad 92: Rad 75:
  
  
[[Matte:Copyrights|Copyright]] © 2021 [https://www.techpages.se <b><span style="color:blue">TechPages AB</span></b>]. All Rights Reserved.
+
[[Matte:Copyrights|Copyright]] © 2021 <b><span style="color:blue">TechPages AB</span></b>. All Rights Reserved.

Nuvarande version från 27 november 2022 kl. 19.05

       Lektion 28          Genomgång          Övningar      


Vad är en delegat?

Delegater är referenser till anonyma funktioner (lambdauttryck).

Med delegater får lambdauttryck namn som kan användas för att referera till dem.

Delegate Def.jpg


Programmet DelegateParam

DelegateParam.jpg


Programmet CountLINQ

Samma sak som den egendefinierade metoden MyCount() ovan, gör LINQ-metoden Count() nedan:

Räknar antalet nollor, negativa och positiva tal i en array. Här skickas lambdauttryck direkt som parameter.

CountLINQ.jpg


Programmet WriteLineOverr

WriteLineOverr.jpg


Programmet MethodGroup

MethodGroup.jpg


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


 










Copyright © 2021 TechPages AB. All Rights Reserved.