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

C#处理Excel返回的非零下界一维数组的模式匹配方案

C#匹配下界非零一维数组的方案

现象原因

C# 中 T[] 语法对应的是 .NET 中的SZ数组(单维零基数组),这类数组强制要求下界为0,和你通过Array.CreateInstance创建的一维非零基数组属于不同的类型,所以自然无法通过object[]模式匹配命中。

而多维数组的语法T[,]本身对应的就是.NET的非SZ数组,天生支持任意下界,所以哪怕下界为1的二维数组也能正常匹配。


匹配方案

你可以通过属性模式匹配基类Array,再校验维度、元素类型两个条件,就能覆盖所有一维object数组,不受下界限制:

switch 表达式写法示例

return result switch
{
    object[,] twoDArray => /* 处理二维数组逻辑 */,
    Array { Rank: 1, ElementType: var elemType } when elemType == typeof(object) => HandleOneDArray((Array)result),
    string message => /* 处理字符串逻辑 */,
    _ => throw new MyException("不支持的返回类型")
};

验证测试

你之前的测试用例改用该模式后会返回true:

Array.CreateInstance(typeof(object), new[] { 2 }, new[] { 1 }) 
    is Array { Rank:1, ElementType: var t } when t == typeof(object);
// 输出:True

操作提示

匹配到的Array实例可以直接通过GetValue、SetValue方法按原下界访问元素,也可以直接转成0基集合方便后续处理:

object[] zeroBasedArr = oneDArray.Cast<object>().ToArray();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:01