Typy danych ze znakiem zapytania

Typy danych ze znakiem zapytania
Riw
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdynia
  • Postów: 201
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:

Kopiuj
 
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.

RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
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

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
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.

  • Rejestracja: dni
  • Ostatnio: dni
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

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Nullable<T> to nie jest klasa.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.