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

PowerShell 5.1中单元素数组转List<int>报错问题咨询

PowerShell 5.1中[List[int]](@(1))报错的原因

在PowerShell 5.1里,只有最后一条语句报错,核心是单元素数组的参数解析逻辑存在差异,具体拆解如下:

  • $a = [List[int]](1, 2) 和 $b = [List[int]](@(1, 2)):
    不管是直接传递多个int值,还是传递多元素的Object[]数组,PowerShell都会将其识别为IEnumerable类型,匹配List<T>的List(IEnumerable<T>)构造函数,顺利将数组中的int元素填充到列表中,因此执行正常。

  • $c = [List[int]](1):
    传递单个int值时,PowerShell会自动将其视为单元素的可枚举集合处理,或者直接通过构造逻辑创建包含该元素的列表,因此执行成功。

  • $d = [List[int]](@(1)):
    这里的@(1)是单元素的Object[]数组,PowerShell 5.1不会将其识别为IEnumerable,反而会把整个数组当作单个参数传递给构造函数。此时它会尝试匹配List<T>的List(int capacity)构造函数,但Object[]类型无法转换为int类型,于是抛出类型转换错误。

PowerShell Core优化了参数解析逻辑,会正确将单元素数组识别为IEnumerable类型,匹配对应的构造函数,因此不会出现该异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:02:35