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

时间:2015-06-03 23:46:37

标签: powershell types

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

position:relative

然后创建一个对象并获取其数据类型,我得到 position: absolute; right: 10px; float: none; ,正如我所期望的那样:

Add-Type -TypeDefinition "public class MyTest {}"

但如果我直接提到这个类型......

MyTest

我得到(new-object MyTest).GetType().Name 。谁能解释一下这里发生了什么?

1 个答案:

答案 0 :(得分:4)

这与Add-Type cmdlet无关;它适用于所有PowerShell类型:

PS > (1).GetType().Name
Int32
PS > [int].GetType().Name
RuntimeType

(new-object MyTest)1之类的内容是特定类型的实例。在它们上调用.GetType()将返回这些实例的类型。

[MyTest][int]之类的内容是RuntimeType类的实例,它代表所有PowerShell运行时类型([...]中的内容)。这就是[MyTest].GetType().Name返回RuntimeType的原因。您基本上是获取MyTest类本身的类型,而不是其实例。

以下是视觉细分:

new-object MyTest  # MyTest instance
[MyTest]           # RuntimeType instance
1                  # Integer instance
[int]              # RuntimeType instance