Skip to content

表达式和语句 API

本系列文档详细介绍 Roslyn 中的表达式和语句 API,包括各种表达式节点类型、语句节点类型以及控制流和数据流分析。

文档信息

  • 难度级别: 中级到高级
  • 预计阅读时间: 60 分钟
  • 前置知识:
    • 语法树基础
    • 语义模型基础
    • C# 表达式和语句

🎯 学习目标

完成本系列文档后,您将能够:

  1. ✅ 理解和使用各种表达式节点
  2. ✅ 理解和使用各种语句节点
  3. ✅ 进行控制流和数据流分析
  4. 应用高级技巧和最佳实践

快速导航

主题描述链接
表达式语法节点字面量、二元、一元、调用、Lambda 等表达式查看详情
语句语法节点声明、赋值、控制流、异常处理等语句查看详情
控制流和数据流分析AnalyzeControlFlow、AnalyzeDataFlow 方法查看详情
高级用法和最佳实践真实场景、高级技巧、FAQ、工具类查看详情

核心概念

1. 表达式节点

表达式是产生值的代码片段。Roslyn 提供了丰富的表达式节点类型来表示各种 C# 表达式。

关键类型:

  • LiteralExpressionSyntax - 字面量
  • BinaryExpressionSyntax - 二元表达式
  • InvocationExpressionSyntax - 方法调用
  • LambdaExpressionSyntax - Lambda 表达式

2. 语句节点

语句是执行操作的代码片段。Roslyn 提供了各种语句节点类型来表示 C# 语句。

关键类型:

  • LocalDeclarationStatementSyntax - 局部变量声明
  • ExpressionStatementSyntax - 表达式语句
  • IfStatementSyntax - if 语句
  • ForStatementSyntax - for 循环

3. 控制流和数据流分析

Roslyn 提供了强大的控制流和数据流分析 API,用于分析代码的执行路径和变量使用情况。

关键方法:

  • AnalyzeControlFlow - 分析控制流
  • AnalyzeDataFlow - 分析数据流

Mermaid 图表

表达式和语句层次结构

\\mermaid graph TD A[SyntaxNode] --> B[ExpressionSyntax] A --> C[StatementSyntax]

B --> D[LiteralExpressionSyntax]
B --> E[BinaryExpressionSyntax]
B --> F[InvocationExpressionSyntax]
B --> G[LambdaExpressionSyntax]

C --> H[LocalDeclarationStatementSyntax]
C --> I[ExpressionStatementSyntax]
C --> J[IfStatementSyntax]
C --> K[ForStatementSyntax]

style A fill:#e1f5ff
style B fill:#d4edda
style C fill:#fff3cd

\\

关键要点

  1. 表达式产生值 - 表达式总是有类型和值
  2. 语句执行操作 - 语句不产生值
  3. 控制流分析 - 分析代码执行路径
  4. 数据流分析 - 分析变量使用情况
  5. 语义分析 - 结合语法和语义信息

相关资源

下一步

  1. 阅读 表达式语法节点 了解表达式
  2. 学习 语句语法节点 掌握语句
  3. 探索 控制流和数据流分析 分析代码
  4. 应用 高级用法和最佳实践 提升技能

文档质量保证

本文档遵循以下质量标准:

  • 完整的目录结构
  • 所有代码示例包含详细中文注释
  • 包含最佳实践和反模式对比
  • 包含真实使用场景
  • 包含跨文档引用
  • 内容完整,未因任何限制而精简

最后更新: 2025-01-21

基于 MIT 许可发布