是什么?在 C# 中是什么意思?
What does the ?. mean in C#?
从项目 Roslyn
、文件 src\Compilers\CSharp\Portable\Syntax\CSharpSyntaxTree.cs
的第 446
行有:
using (var parser = new InternalSyntax.LanguageParser(lexer, oldTree?.GetRoot(), changes))
那里的?.
是什么?
它是否检查 oldTree 是什么 null
,如果不是,那么它是 运行 GetRoot
方法,如果不是,那么它是什么 returns?这是我的第一个假设(可能是错误的),但我无法继续下去。 (确认一下,and/or回答新问题)
我用谷歌搜索 What is ?. C#
没有找到任何相关内容,就好像它忽略了我的 ?.
(?)
它可能是来自 C# 6.0 的 Null-Conditional Operator:
The null-conditional operator conditionally checks for null before invoking the target method and any additional method within the call chain.
在你的例子中,如果 oldTree
是 null
,
oldTree?.GetRoot()
将 return null
而不是尝试调用 GetRoot()
并抛出 NullReferenceException
.
从项目 Roslyn
、文件 src\Compilers\CSharp\Portable\Syntax\CSharpSyntaxTree.cs
的第 446
行有:
using (var parser = new InternalSyntax.LanguageParser(lexer, oldTree?.GetRoot(), changes))
那里的?.
是什么?
它是否检查 oldTree 是什么 null
,如果不是,那么它是 运行 GetRoot
方法,如果不是,那么它是什么 returns?这是我的第一个假设(可能是错误的),但我无法继续下去。 (确认一下,and/or回答新问题)
我用谷歌搜索 What is ?. C#
没有找到任何相关内容,就好像它忽略了我的 ?.
(?)
它可能是来自 C# 6.0 的 Null-Conditional Operator:
The null-conditional operator conditionally checks for null before invoking the target method and any additional method within the call chain.
在你的例子中,如果 oldTree
是 null
,
oldTree?.GetRoot()
将 return null
而不是尝试调用 GetRoot()
并抛出 NullReferenceException
.