Powershell 两种方法的数据类型差异

Powershell 两种方法的数据类型差异,powershell,types,Powershell,Types,如果我声明这样的数据类型: addtype-TypeDefinition“公共类MyTest{}” 然后创建一个对象并获取它的数据类型,我得到MyTest,正如我所期望的: (新对象MyTest).GetType().Name 但是如果我直接提到类型 [MyTest].GetType().Name 我得到RuntimeType。有人能解释一下这里发生了什么吗?这与添加类型cmdlet无关;它适用于所有PowerShell类型: PS>(1).GetType().Name Int32 PS>

如果我声明这样的数据类型:

addtype-TypeDefinition“公共类MyTest{}”
然后创建一个对象并获取它的数据类型,我得到
MyTest
,正如我所期望的:

(新对象MyTest).GetType().Name
但是如果我直接提到类型

[MyTest].GetType().Name

我得到
RuntimeType
。有人能解释一下这里发生了什么吗?

这与
添加类型
cmdlet无关;它适用于所有PowerShell类型:

PS>(1).GetType().Name
Int32
PS>[int].GetType().Name
运行时类型
(newobjectmytest)
1
之类的东西都是特定类型的实例。对它们调用
.GetType()
,将返回这些实例的类型

但是,类似于
[MyTest]
[int]
的内容是
RuntimeType
类的实例,该类表示所有PowerShell运行时类型(在
[…]
中)。这就是为什么
[MyTest].GetType().Name
返回
RuntimeType
。您基本上得到的是
MyTest
类本身的类型,而不是它的实例

以下是视觉细分:

newobjectmytest#MyTest实例
[MyTest]#RuntimeType实例
1#整数实例
[int]#RuntimeType实例

哦。。。我明白了。因此[int]与(1)相同