Typy danych ze znakiem zapytania

0

Witam,jakis czas temu wertowalem ksiazke do ASP.NET MVC i natrafilem na listing w ktorym na poczatku definicji klasy zdefiniowano nastepujaco typ int:

 
Public int? A {get; set; }

Oczywiscie domyslam sie o co chodzi w Get i Set ale nie rozumiem sensu istnienia tego znaku ? .Przejrzalem podrecznik do C# wzdłuż i wszerz ale zero danych,dlatego aby lepiej zrozumiec pisze tutaj.

1

Znaku zapytania używa się do typu, który normalnie nie może być nullem, aby nadać mu taką możliwość. To oznacza, że właściwości A możesz przypisać nulla i kompilator nie będzie się burzył. http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

0

Z typami nullable wiąże się operator ?? pozwalający na usunięcie znaku zapytania z typu zmiennej:

int? x;
...
int y = x ?? 42;

// co oznacza:
int y = (x != null) ? x.Value : 42;

// albo:
int y;
if (x != null)
    y = x.Value;
else
    y = 42;

oczywiście jako stałą używa się najczęściej 0.

0

warto dodać że ? to tylko syntactic sugar czyli upiększenie kodu, w praktyce rozwijane jest do postaci:

Nullable<int>

zaś klasa generyczna Nullable to zwykła klasa, która trzyma wartość w polu Value, trzyma również flagę HasValue dzięki czemu można sprawdzić czy wartość nie jest nullem, oraz posiada opratory rzutowania które pozwalają na "interakcję" typu nullable ze zwykłym

czyli po prostu opakowujesz typ prosty (struct) w klasę, dając jej dodatkową możliwą wartość null

0

Nullable<T> to nie jest klasa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1