Co oznacza ?
w następującym kodzie C#?Składnia zapytania na wywołanie metody
var handler = CallBack;
handler?.Invoke();
Czytałem, że można użyć ?
przed typu, aby wskazać, że jest to rodzaj pustych. Czy to robi to samo?
Co oznacza ?
w następującym kodzie C#?Składnia zapytania na wywołanie metody
var handler = CallBack;
handler?.Invoke();
Czytałem, że można użyć ?
przed typu, aby wskazać, że jest to rodzaj pustych. Czy to robi to samo?
Jest to C# 6 Kod pomocą null conditional operator
wskazując, że ten kod nie będzie rzucać NullReferenceException
wyjątek jeśli handler
jest zerowy:
Delegate handler = null;
handler?.Invoke();
który uniknąć piszesz kontrole zerowe, które trzeba by zrobić w poprzednich wersjach języka C#:
Delegate handler = null;
if (handler != null)
{
handler.Invoke();
}
Dlaczego odpowiedź na to pytanie, kiedy jest tak wyraźnie dup? –
@Lynn OP zapytał: "Co oznacza znak? W następującym kodzie C#?" Czy odpowiedź na to pytanie brzmi: "Jest to lepszy sposób na przeprowadzenie głębokiej kontroli zerowej"? To nie jest (IMO) dobry dupek. Po prostu jest to jedna z możliwych odpowiedzi na stare pytanie. –
@GrantWinney Twierdzę, że gdy ktoś przyjdzie na to pytanie od Google, zobaczy drogowskaz wskazujący na inne pytanie. Następnie będą czytać o tym, jak wcześniej nie było zwięzłego sposobu przeprowadzania zerowych kontroli warunkowych, ale teraz jest ... i będą mieli "ah ha!" moment rodzaju. –
To jest operator bezpiecznej nawigacji, nowy w C# 6. Gdzieś na SO musi być duplikat. – senshin
Nie, to nie jest to samo, co deklarowanie typu zerowego. To, co widzisz, to składnia C# 6, zwana 'operatorem warunkowym 'null' – Jonesopolis
Oto dokumentacja (https://msdn.microsoft.com/en-us/library/dn986595.aspx) – juharr