Goed, je hebt (behalve een badeendje) dan misschien niets gewonnen, maar mocht je nieuwsgierig zijn naar de juiste antwoorden op de vragen: hier zijn ze.

1. Welke van de volgende declaraties beperkt de generic type parameter tot een class?

  • class Processor where T: class
  • class Processor T: object
  • class Processor where T = new()
  • class Processor where T: new()

Bron

2. Met welk keyword beperk je een class tot een base class?

  • sealed
  • virtual
  • abstract
  • protected

Bron

3. Is het mogelijk om in één class twee interfaces te implementeren, die beiden een methode bevatten met dezelfde naam en signature?

  • Ja, implementeer beide interfaces impliciet
  • Ja, implementeer minimaal één interface impliciet
  • Nee, het is niet mogelijk om in één class meerdere interfaces te implementeren met dezelfde naam en signature
  • Nee, het is niet mogelijk om in één class meerdere interfaces te implementeren

Hoewel het mogelijk is om beide interfaces impliciet te implementeren, is het voldoende om dit voor één van de interfaces te doen.

4. Welke van de volgende keywords wordt gebruikt om aan te geven dat een field door meerdere threads tegelijk kan worden gewijzigd?

    • unsafe
    • virtual
    • extern
    • volatile

Bron

5. Wat is de output van de volgende code?

Copy to Clipboard
  • Position = 511
  • Position =
  • Compile-time error
  • Run-time error

De Position property is protected, en daardoor alleen beschikbaar binnen de eigen, en afgeleide, class. Hierdoor resulteert een poging tot het veranderen van de waarde van de Position property buiten deze classes in een compile-tim error.

6. Wat is de output van de volgende code?

Copy to Clipboard
  • Compile-time error
  • Run-time error
  • Int32
  • String

De generic type parameter van de Processor class, als base-class van DataProcessor is van het type int. Hierdoor is het type van T, gebruikt in de Process methode ook van het type int, ongeacht het type van de generic parameter waarmee DataProcessor wordt geïnstantieerd.

7. Wat is de output van de volgende code?

Copy to Clipboard
  • Target locked
  • Laser Target locked
  • Compile-time error
  • Run-time error

Hoewel de compiler een waarschuwing geeft dat de Lock methode in de LaserTarget class de gelijknamige methode in de Target class verbergt, en dat het override of new keyword gebruikt zou moeten worden, compileert en werkt deze code wel. Omdat het gebruik van var resulteert in een referentie van het type LaserTarget, wordt de Lock methode van deze class aangeroepen.

8. Wat is de waarde van result na het uitvoeren van de volgende code?

Copy to Clipboard
  • 0
  • 1
  • 7
  • null

Het filteren van items met Where resulteert hier in een lege set, en resulteert FirstOrDefault in de default waarde van het type int, namelijk 0.

9. Wat is de output van de volgende code, als de cancellationToken parameter van de ProcessCommandsAsync methode wordt gecancelled?

Copy to Clipboard
  • Cancellation requested.
  • Task cancelled.
  • Unhandled exception
  • Geen output

Bij een gecancelde cancellation-token wordt (in de meeste gevallen) een OperationCanceledException gethrowed (b.v door het aanroepen van CancellationToken.ThrowIfCancellationRequested). Maar aangezien OperationCanceledException is afgeleid van TaskCanceledException, zal het 1e catch block de exception afvangen.
Task.Delay throwed zeker een OperationCanceledException, als deze wordt aangeroepen met een gecancelde cancellation-token. Voor de implementatie van commandProcessor.ExecuteAsync is dat hier niet zichtbaar.

10. Wat is de output van de volgende methode, als de get-request een 404 response oplevert:

Copy to Clipboard
  • Compile-time error
  • Not Found
  • Not Found & Finally
  • Error & Finally

Door de 404 response throwed de EnsureSuccessStatusCode methode een HttpRequestException met de StatusCode: HttpStatusCode.NotFound. Deze exception wordt niet door de eerste catch afgevangen, omdat deze filtert op de StatusCode: HttpStatusCode.Found. De 2e catch vangt de exception wel af, en rethrowed deze. Hierdoor worden zowel het catch als het finally blok in het buitenste try/catch blok uitgevoerd.