Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[C#] '?' in Variabele Declaratie

Pagina: 1
Acties:
  • 297 views

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Net zag ik in een stuk C# code de volgende constructor staan.


Public SpriteBatch(..., ... ,... Rectangle? rectangle, ..)

Wat betekend het vraagteken? Ik kan het niet op internet vinden (Question mark in variable declaration C# ?) maar dat geeft geen bruikbare hits.

Wat interessant is, is dat Rectangle? blijkbaar geen Rectangle is, want dan krijg je de volgende (logische) error:
Error 1 Cannot implicitly convert type 'Microsoft.Xna.Framework.Rectangle?' to 'Microsoft.Xna.Framework.Rectangle'. An explicit conversion exists (are you missing a cast?)
Verder lijkt Rectangle? wel gewoon een rectangle te zijn en als ik het object construct en gewoon een normale Rectangle meegeef gaat het wel allemaal goed.

Het is niet echt een probleem (kan gewoon casten) maar wat betekend het vraagteken? Ik ben er al wel achter dat het alleen op structs toegepast kan worden.

~ Mijn prog blog!


  • beany
  • Registratie: Juni 2001
  • Laatst online: 16-11 14:01

beany

Meeheheheheh

Rectangle? rectangle == System.Nullable<Rectangle> rectangle

Het is een shortcut :)

edit: wat meer uitleg...

Hiermee kan je een value type toch null laten zijn. Een int, float, etc kan geen null zijn omdat het een value type is. Door er een wrapper omheen te plaatsen(System.Nullable) kan je die variabelen toch een null waarde geven.

System.Nullable is dus een wrapper, niets meer dan dat. De eigenlijk waarde kan je benaderen via de value property(rectangle.value) en met de HasValue property kan je makelijk bepalen of de variabele null is of een inhoud heeft.

[ Voor 73% gewijzigd door beany op 26-08-2008 09:42 ]

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 16-11 21:27
Het is inderdaad wat lastig zoeken in google op enkel een vraagteken.

Een vraagteken erachter geeft aan dat het een nullable type is (de compiler maakt er een Nullable<Rectangle>), en dit zorgt er dus voor dat de variabele ook de waarde null kan krijgen.

Zie ook msdn: http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:00
Nullable types, misschien moeilijk te zoeken in google, maar ik denk wel dat dit in de eerste de beste C#2.0 tutor te vinden was.

Casten hoeft niet.
Je kan gewoon dit doen:
code:
1
2
3
4
5
6
Rectangle? r;

if( r.HasValue )
{
    Rectangle another = r.Value;
}

[ Voor 34% gewijzigd door whoami op 26-08-2008 09:45 ]

https://fgheysels.github.io/


Dit topic is gesloten.