Lesweek 15: Herhaling Basis C#

Python intro
Programming basics-II
Les 3 / Week 7a
Herhaling Basis C#
CSD-V + Algemeen
Lesweek 15
1 / 24
next
Slide 1: Slide
Applicatie- en mediaontwikkelaarMBOStudiejaar 1

This lesson contains 24 slides, with interactive quiz and text slides.

Items in this lesson

Python intro
Programming basics-II
Les 3 / Week 7a
Herhaling Basis C#
CSD-V + Algemeen
Lesweek 15

Slide 1 - Slide

🥅 Doelen 🥅
De ultieme basis van C# nog eens herhalen: 
  • Types
  • Classes
  • null
  • Methods
  • Met de debugger volgen we het verloop van onze code en inspecteren variabelen en de call stack.

✨ Nieuw: Wat is ‘Call Stack’, waarom die nodig is en hoe werkt die?

Slide 2 - Slide

Deze les (theorie)
📚 Theorie (50 minuten):
  • Types in C#
  • Types omzetten (casten of parsen)
  • Classes als eigen types
  • Null
  • Methods en hun 'signature'
  • Enkele types: Date, DateTime, DateOnly
  • Vragenronde

Slide 3 - Slide

Deze les (praktisch)
⏸    Tussendoor 10 minuten pauze

👩‍💻 Praktisch (60 minuten): 
  • Program.cs en Call Stack
  • Debugger: De Call Stack Visualiseren
  • Debugger: Inspecteren van Code
  • Oefeningen

Slide 4 - Slide

Wat weet je al over...
  • Types in C#
  • Types omzetten (casten of parsen)
  • Classes als eigen types
  • Null
  • Methods en hun 'signature'

Slide 5 - Slide

Theorie bespreken
🧱 In de hierop volgende slides herhalen we van alles over de basis van C#

✨ Ook zie je enkele nieuwe dingen.

🤯 Stel vragen als iets onduidelijk is, of te snel gaat.

Slide 6 - Slide

Simple types
Signed:

Unsigned:

Floating point:

Enum Types:

Bij gebruik van var wordt het type door C# bedacht aan de hand van aanwezige informatie.

Het eerste getal in een vermenigvuldiging bepaalt het uiteindelijke type.
l of L suffix = long
d of D = double
f of F = float
m of M = decimal

Slide 7 - Slide

String:


Concatenation:


Of:
Types in C#

Slide 8 - Slide

Array Types:
Plaats blokhaken achter [ ] het datatype om er een lijstje van te maken. Bij een array moet het aantal plekken (de Length) in de array duidelijk zijn. Door:
a) Meteen vullen:

b ) Length van array aangeven, dan pas vullen:




Lengte opvragen:



Een List type is een soort array met meer mogelijkheden (maakt automatisch plekken erbij)
Types in C#

Slide 9 - Slide

Types in C#
Object Types:
  • Met classes kunnen 'eigen types' worden gemaakt.
  • Classes hebben eigenschappen (properties, altijd public)
  • Classes hebben velden (fields, nooit public)
  • Classes hebben functies/subroutines (methods)
  • Classes hebben gebeurtenissen (events)
  • Types kunnen ook eigenschappen en methodes 'overerven' van elkaar

Slide 10 - Slide

Types in C#
Enkele Object Types die Microsoft heeft gemaakt:
  • System.Console (voor console applicaties)
  • Microsoft.UI.Xaml.Window (voor WinUI schermen)
  • Microsoft.UI.Xaml.Controls.Button (knop element in WinUI)
Klasse staan vaak in een namespace. Dit voorkomt conflicten wanneer twee ontwikkelaars hun klassen dezelfde geven. C# zou niet weten welke die moet kiezen. Met een using bovenin de code geven we aan uit welke namespaces we classes gebruiken:

Slide 11 - Slide

Types in C#
Object Types
  • Alles in C# erft uiteindelijk over van de 'object' klasse.
  • Daarom hebben alle types de Equals en ToString methode uit die klasse:



In een variabele of eigenschap met type 'object' past alles. Zelfs instanties van zelf gemaakte klassen. Om die reden is 'SelectedItem' bij een ComboBox van het type object. Zo staat Microsoft toe dat iedereen er diens objecten in kan stoppen, of het nu een User, Car, Printer, Student, Document, etc... is.

 

Slide 12 - Slide

Types in andere talen
Bij PHP hoef je nergens types aan te geven:



Daarom kom je er pas bij het testen van de website (run-time) achter als je iets geks doet, bij C# kom je er meteen achter dankzij 'compile-time' errors:

In moderne versie van PHP kun je op veel plekken nu types aangeven, zodat je code-editor van te voren al kan waarschuwen.

Slide 13 - Slide

Casten of parsen?
Heb je *iets* en wil je een string?
Heb je een string en wil je een bepaald type getal?
Zo is er ook:
float.Parse
double.Parse
ulong.Parse
etc...
Heb je een object en weet je dat het eigenlijk een ander type is?



Dan casten naar dat type:

Slide 14 - Slide

Veilig parsen
Vult een gebruiker (per ongelijk) geen geldig getal in? Dan faalt <type>.Parse met een Exception:



Met <type>.TryParse kunnen we het omzetten proberen en krijgen we 'true' als het lukt.
Methodes kunnen via 'return' maar 1 ding teruggeven. De TryParse geeft al een 'bool' terug om het succes aan te duiden.
Toch wordt via deze speciale 'out' parameter nog extra data teruggeven (het omgezette getal bij 'true').

Slide 15 - Slide

Classes als eigen type

Slide 16 - Slide

Null
Wanneer een variabele een object kan bevatten, maar er geen in zit. Dan zit er null in. 
Bijvoorbeeld wanneer er niks is geselecteerd in een ComboBox:


Wanneer je een variabele gebruikt met null erin, alsof er wel iets in zit, dan krijg je een Null Reference Exception:
Als null een mogelijkheid is, houdt er dan rekening mee. Bijvoorbeeld:

Slide 17 - Slide

Nullable Types
Sinds C# versie 8 kun je types expliciet nullable maken met een vraagteken achter het datatype:


Als we een breakpoint na deze code zetten en met de Debugger inspecteren wat de waardes zijn zien we:
(Het 'default' keyword vult de variabele met de standaard waarde voor dat datatype)

Slide 18 - Slide

Nullable Types
Wanneer nullable gebruiken?
Wanneer het extra informatie toevoegt, bijvoorbeeld:
Met totalDistance als float zou een collega ontwikkelaar de methode kunnen gebruiken en denken: "oh totalDistance is 0", die user heeft gewoon nog niet gereden, maar die mag het misschien wel. Door float nullable te maken en 'null' in te stellen als de gebruiker niet mag rijden, geven we extra informatie.

Slide 19 - Slide

Methods
De signature van een methode is: de naam en de type parameters.
Signature: CanDrive()
Signature: Drive(float, out float)

Slide 20 - Slide

Method Signature
Dankzij signatures kunnen we ook meerdere methodes met dezelfde naam maken, zolang die maar verschillende parameters ontvangt:
We noemen dit 'method overloading'. Dankzij method overloading kan de Console.WriteLine op 17 verschillende manieren worden aangeroepen:
Als we de WriteLine methode aanroepen met 42 als parameter, dan snapt C# dat die de methode met de signature WriteLine(int) moet uitvoeren.

Slide 21 - Slide

Vragenronde

Slide 22 - Mind map

10 minuten pauze

Slide 23 - Slide

👩‍💻 Praktisch (60 minuten):
  • Program.cs en de Call Stack
  • Debugger: De Call Stack Visualiseren
  • Debugger: Inspecteren van Code

Download van ItsLearning CSD-V > Uitwerkingen > 'Lesweek 15 - MenuApp Call Stack Demo.zip'


Slide 24 - Slide