Roslyn 检测三元运算符,如 ? :

Roslyn detect ternary operator like ? :

我一直在寻找一个解决方案,它可以使用 roslyn 分析器库找到像 true ? DoIt() : DoItNot(); 这样的三元运算符。

我提出了以下解决方案,但是这个 returns 只有 "standard" if-else-Expressions。

var ifStatement = tree.GetRoot().DescendantNodes().OfType<IfStatementSyntax>().First();

我确实搜索了另一个 SyntaxKind,但没有找到我要找的东西。 因此,如果有人能解决我的问题,我将非常高兴。

您正在寻找 SyntaxKind.ConditionalExpression

tree.GetRoot()
    .DescendantNodes()
    .Where(node => node.IsKind(SyntaxKind.ConditionalExpression))