Skip to content

特殊类型

本文档介绍 Roslyn 中的特殊类型,包括动态类型、元组类型和指针类型。


📋 文档信息

属性
难度高级
阅读时间25 分钟
前置知识基本类型、C# 高级特性
相关文档基本类型类型系统索引

动态类型

检测动态类型

csharp
public bool IsDynamicType(ITypeSymbol type)
{
    return type.TypeKind == TypeKind.Dynamic;
}

元组类型

处理元组

csharp
public bool IsTupleType(ITypeSymbol type)
{
    return type.IsTupleType;
}

public void AnalyzeTuple(INamedTypeSymbol tupleType)
{
    if (tupleType.IsTupleType)
    {
        foreach (var element in tupleType.TupleElements)
        {
            Console.WriteLine($"元素: {element.Name}, 类型: {element.Type}");
        }
    }
}

指针类型

处理指针

csharp
public bool IsPointerType(ITypeSymbol type)
{
    return type.TypeKind == TypeKind.Pointer;
}

public ITypeSymbol GetPointedAtType(IPointerTypeSymbol pointerType)
{
    return pointerType.PointedAtType;
}

数组类型

处理数组

csharp
public bool IsArrayType(ITypeSymbol type)
{
    return type.TypeKind == TypeKind.Array;
}

public void AnalyzeArray(IArrayTypeSymbol arrayType)
{
    Console.WriteLine($"元素类型: {arrayType.ElementType}");
    Console.WriteLine($"维度: {arrayType.Rank}");
}

关键要点

  • ✅ 使用 TypeKind.Dynamic 识别动态类型
  • ✅ 使用 IsTupleType 检查元组类型
  • ✅ 使用 TupleElements 访问元组元素
  • ✅ 使用 TypeKind.Pointer 识别指针类型

相关文档


最后更新: 2026-02-06

基于 MIT 许可发布