Pytanie Co robi? znaczy w C #? [duplikować]


To pytanie już zawiera odpowiedź:

Z projektu Roslyn, plik src\Compilers\CSharp\Portable\Syntax\CSharpSyntaxTree.cs na linii 446 jest:

using (var parser = new InternalSyntax.LanguageParser(lexer, oldTree?.GetRoot(), changes))

Co to jest ?. tam?

Czy sprawdza to, co jest stare? null a jeśli nie, to działa GetRoot metoda, a jeśli nie to, co zwraca? To jest moje pierwsze założenie (które może być złe), ale nie mogę się z tym zgodzić. (Potwierdź i / lub odpowiedz na nowe pytanie)

Przeszukałem go What is ?. C# i nic podobnego nie wyszło, jest tak, jakby mnie zignorowało ?.(?)


14
2018-04-18 19:26


pochodzenie


To jest operator rozsiewający nulli tak, to jest trochę trudne do szukania w Google, ponieważ operator składa się tylko ze znaków interpunkcyjnych. - Lucas Trzesniewski


Odpowiedzi:


Mogłoby być Operator o zerowym warunku z C # 6.0:

Operator null-warunkowy warunkowo sprawdza zerowość przed wywołaniem metody docelowej i dowolnej dodatkowej metody w łańcuchu wywołań.

W twoim przypadku, jeśli oldTree jest null,

oldTree?.GetRoot()

wróci null zamiast próbować zadzwonić GetRoot() i rzucanie NullReferenceException.


23
2018-04-18 19:27