Базовый тип тот же, но когда вы передаете объект параметру Write-Host -Object
, где-то по пути вызывается метод ToString()
объекта, что приводит к System.Int32
.
> Write-Host (1).GetType()
System.Int32
> (1).GetType().ToString()
System.Int32
Когда вы используете оператор сложения для строки, к объекту сначала приводится тип, приведенный к строке, что приводит к int
:
> "" + (1).GetType()
int
> "$((1).GetType())"
int
> [String](1).GetType()
int
То же самое происходит, когда вы передаететип для параметра String (из-за приведенного типа):
> Write-Verbose -Message (1).GetType() -Verbose
VERBOSE: int
Примечание : Объект на самом деле является System.RuntimeType
из-за использования метода GetType()
.