【发布时间】:2022-01-11 11:44:03
【问题描述】:
我正在编写通过 COM 自动化调用 Excel 宏的代码。需要处理不同的返回类型,模式匹配非常适合:
var result = ExcelApp.Run("MyMacro", ...);
return result switch
{
object[,] array => ...,
string message => ...,
_ => throw new MyException("...")
};
因为它是 Excel,所以数组的下限是 1 而不是 0,这在 .NET 中得到完全支持。然而,令我惊讶的是,我发现当我尝试对下限为 1 的一维数组执行模式匹配时,模式不匹配。
详细来说,创建一个下界为 1 的 2×2 数组将匹配模式 object[,],即以下语句为 true:
Array.CreateInstance(typeof(object), new[] { 2, 2 }, new[] { 1, 1 }) is object[,] array
但是,创建一个下限为 1(不正常)的 1×2 数组(只是一个包含两个元素的普通数组)将不匹配模式 object[],即以下语句为false:
Array.CreateInstance(typeof(object), new[] { 2 }, new[] { 1 }) is object[] array
这让我很惊讶,但是有没有一种模式可以用来匹配具有非零下限的一维数组?
【问题讨论】:
标签: c# arrays excel pattern-matching excel-automation