You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# switch元组模式匹配报错:无法用Arc处理IGeometry元组表达式

错误原因

你传入switch的是元组类型(IGeometry, IGeometry),但case里的Arc a1, Arc a2没有用括号包裹,C#编译器会把它解析成两个独立的模式,而非匹配元组的两个元素——编译器无法将单个Arc类型模式应用到元组整体上,因此抛出错误。

额外注意:Arc是值类型(struct),当它被转换为IGeometry接口时会触发装箱操作,但这不是当前报错的直接原因。

修复方法

将case中的模式改为元组模式,用括号包裹两个元素的类型匹配,让编译器明确要分别匹配元组的两个元素:

public static int Intersects(this IGeometry object1, in IGeometry object2)
{
    switch (object1, object2)
    {
        case (Arc a1, Arc a2):
                // 在这里实现圆弧交点数量的计算逻辑
                // 示例:return CalculateArcIntersectionCount(a1, a2);
                return 0; // 替换为实际计算结果

        default: return 0;
    }
}

如果需要扩展支持更多几何类型组合,直接添加对应的元组模式case即可,比如:

case (Arc arc, Line line):
        // 处理圆弧与直线的交点计算
        return CalculateArcLineIntersectionCount(arc, line);
case (Line line, Arc arc):
        // 复用圆弧与直线的计算逻辑
        return CalculateArcLineIntersectionCount(arc, line);

内容的提问来源于stack exchange,提问作者WDUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:30:49