Jest to mój pierwszy wpis na tym forum więc dziękuje za przyjęcie. Do tej pory jedynie czytałem wpisy innych ale jako, że stanąłem przed z jednej strony trywialnym problem ale z drugiej strony nastręczającym mi kłopot z jego zrozumieniem postanowiłem zadać pytanie.
Pytanie 1
Otóż przerabiając już dość dawno temu jakiś tutorial z .Net WebApi Core gdzie auto wytłumaczył, że dzięki tej opcji <Nullable>enable</Nullable> jesteśmy w stanie do zmiennych typu prostego przypisywać wartość "null" co jest dla mnie jasne i ani się nad tym nie zastanawiałem więcej, ani tego nie testowałem, aż do dziś. Trochę się pobawiłem i okazało się, niezależnie od tego czy mam tą opcję aktywną czy nie to do int-a jestem w stanie przypisać "null" tylko wtedy gdy użyje znaku zapytania "?". Więc co ta opcja tak naprawdę robi?
Pytanie 2
Po co oznacza się typy zmiennych znakiem zapytania (na przykład string? a)? Według informacji które znalazłem pozwala to na przypisanie do typu prostego wartości null co jest jasne. Czyli jeśli w DTO oznaczę właściwość typu np. int znakiem zapytania to jest ona w stanie przyjąć null, a tym samym staje się opcjonalna. Tylko po co wtedy oznaczać wartości typu string znakiem zapytania skoro one przyjmują null-a z klucza? Jeśli natomiast tego nie zrobię to okazuje się, że taki string bez znaku zapytania staje się wymagany. Jest to dla mnie nie logiczne ale może
jest tego jakieś sensowne wytłumaczenie, czy po prostu takie są zasady i już?
Pytanie 3
Do czego służy "default!"? Co daje wykrzyknik na końcu ? Po wstępnych próbach zarówno wersja z ! jak i bez przypisuje 0 do wartości prostych i null do wartości referencyjnych pod warunkiem że typ prosty oznaczem ?