Powershell 试图理解此代码(创建[char]范围)

Powershell 试图理解此代码(创建[char]范围),powershell,Powershell,我有可以工作的代码,但我不知道为什么它可以工作 这将生成一个包含英文字母表中每个字母的列表: [char[]]([char]'a'..[char]'z') 但是,这不会: [char]([char]'a'..[char]'z') 这将实际生成97-122之间的数字列表 ([char]'a'..[char]'z') 有没有专家能向我解释一下这是如何工作的(或不工作的)?在第二个示例中,您试图将一个字符数组转换为一个字符[char]。那不行。在第三个示例中,PowerShell将'a'视为字符

我有可以工作的代码,但我不知道为什么它可以工作

这将生成一个包含英文字母表中每个字母的列表:

[char[]]([char]'a'..[char]'z')
但是,这不会:

[char]([char]'a'..[char]'z')
这将实际生成97-122之间的数字列表

([char]'a'..[char]'z')

有没有专家能向我解释一下这是如何工作的(或不工作的)?

在第二个示例中,您试图将一个字符数组转换为一个字符
[char]
。那不行。在第三个示例中,PowerShell将
'a'
视为字符串。因此,将其转换为[char]会告诉PowerShell它是一个单独的char。
运算符的范围超过数字。幸运的是,PowerShell可以将字符“a”转换为ASCII值97,将字符“z”转换为122。所以你实际上得到了97..122。然后,在第一个示例中,
[char[]]
将该整数数组转换回字符数组:a到z。

在Powershell中,“a”是一种[string]类型。[char]'a'显然是[char]类型。这些是非常不同的事情

$string = 'a'
$char = [char]$string
$string可以转换为[char],因为它是由单个字符组成的字符串。如果字符串中有多个字符,例如“ab”,则需要一个[chars]数组,类型为[char[]。额外的一组方括号指定一个数组

$string | get-member
$char | get-member
显示两种类型的不同方法。[char]类型具有.toint()方法。如果将其转换为[int],则该字符将采用数字ASCII码

[int]$char

返回字母“a”的ASCII码97。

Ah!所以额外的一组括号意味着它是一个“类型”数组。。。有趣:)谢谢