Co oznacza "?" przy tupie np w argumencie metody?

0

Nie jestem programistą C# ale mam pytanie odnośnie "?"

private async Task SendGpsMessage(int? zmienna = 4) {...}
0

? oznacza to, że zamiast int'a możesz przekazać wartość null
natomiast

SendGpsMessage(int? zmienna = 4) {...} 

możesz wywołać jako metodę bezparametową, wtedy zmienna przyjmnie domyślną wartość 4

1

tzw. nullable types (typy nullowalne?)

Ogólnie bierze się to stąd, że typy wartościowe (np. int, float, struct) nie mogą być nullami. A kiedy się je opakuje w System.Nullable to już mogą :) A ? to lukier składniowy dla typów nullowalnych.

0

Dziękuje za odp czy z obiekatmi też tak mozna robić ?

2

Tak:

obj?.Metoda() <-- metoda zostanie wywołana tylko wtedy, gdy obj nie będzie null. To ten sam zapis, co:

if(obj != null)
  obj.Metoda();
1
Kolesko napisał(a):

Dziękuje za odp czy z obiekatmi też tak mozna robić ?

Typy referencyjne są nullowalne domyślnie, bez konieczności stosowania ?.

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