В чем разница между System.Int32 и int, и почему getType () оценивает одно и то же значение один раз для этого и один раз для другого? - PullRequest
1 голос
/ 07 июня 2019

Это простая функция, которой я могу передать значение. Функция будет оцените getType() по значению и напечатайте его:

function showTypeOfParam($p) {
  write-host $("Type of $p is " + $p.getType())
  write-host $p.getType()
}

Если я вызываю функцию так:

showTypeOfParam   1

будет напечатано

Type of 1 is int
System.Int32

В чем разница между int и System.Int32?
И почему он однажды печатает int и один раз System.Int32?

1 Ответ

0 голосов
/ 07 июня 2019

Базовый тип тот же, но когда вы передаете объект параметру 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...