У нас есть:
$false.length
1
И:
$var = $false
$var.length
1
Но:
param ([string]$var = $false)
$var.length
5
Почему это так?
Потому что вы специально объявили $var
строкой.
Используйте $var.getType()
, чтобы увидеть тип данных вашей переменной.
$false
имеет логическое значение, поэтому, если вы присвоите его переменной, PowerShell автоматически объявит эту переменную также логической.
Я понимаю. Я не думал о том, что означает [string]
. Я просто скопировал код в другое место
Вы выбрали $false
как [string]
.
В результате значение $var
становится строкой False
.
.
Это 5 символов.
+1, но, возможно, стоит прямо упомянуть, что из-за объявления типа
[string]
значение, присваиваемое$var
, представляет собой строковое значение“False”
, состоящее из 5 символов, следовательно,$var.Length
возвращает 5. Новый пользователь Powershell может не иметь возможности читать между строк вашего ответа, поэтому было бы полезно сделать его до боли очевидным :-).