PowerShell中的数组使用

在平常处理中,除了使用像“数值类型”和“字符串类型”外,还须要使用可以包含其余对象的“集合”类型(请注意,这里的集合对应英文是Collection,而非数学概念上的Set。)。大多数常见语言,都提供一些操做集合类型的语法。最基本的集合类型就是数组类型,它提供了一种下标基于0的数组对象。shell

首先经过几个简单的例子,来了解一下PowerShell中的数组是如何使用的。数组

PS C:/> 1,'a',2MB,0x100数据结构

1工具

a学习

2097152spa

256orm

上面的小例子输出了4个对象:数值“1”、字符串“a”(注意:虽然只有一个字符,但这里仍然是一个字符串)、数值“2MB”和十六进制数值“0x100”。也许您很想了解这个例子和数组究竟有什么联系,实际上这个例子清楚地解释了PowerShell中数组类型的语法。在PowerShell中,只要把不一样的对象用逗号“,”链接起来,就能够构造出数组对象。本章节的重点在于像你们介绍数组类型的使用,所以将在后续的章节详细介绍逗号表达式“,”的使用。咱们回到刚才的例子中,虽然这4个对象组成了PowerShell中的数组对象,可是若是没有把这个对象存储起来或者丢弃掉的话,PowerShell就会利用默认的格式器和输出器将它们输出到控制台上。最终咱们就看到了上面四行输出结果。对象

如今咱们知道了PowerShell中构造数组的最简单的方式,接下来让咱们一块儿探索更多关于数组对象更多的特性:索引

PS C:/> $array1 1,2,3,4接口

PS C:/> $int 1

PS C:/> $array1.count

4

PS C:/> "$array1"

1 2 3 4

PS C:/> $int.count

PS C:/> "$int"

1

细心的读者确定已经发现,在第一个例子中,使用了逗号构造了一个包含四个整数的数组,并将其存储在变量$array1中。接下来将数值1存储在变量$int中。数组对象上有一个属性Count用来指出当前数组中的对象数量,咱们能够看到$array1中包含了4个对象。可是在$int上确没有该属性(注意:若是引用的属性不存在,PowerShell返回$null对象,该对象不会对控制台产生任何影响,只是简单的使提示用户继续输入命令)。

PowerShell是基于对象的shell,如今让咱们来看看数组到底是什么对象:

PS C:/> $array1.GetType().FullName

System.Object[]

PowerShell中调用对象上的GetType()方法,能够获得该对象的类型对象(类型也是一个对象)。而该对象上的FullName属性就是该对象表示的类型的名称。这里有点绕口令了,总之若是你想知道一个对象的类型就调用GetType()方法,再访问FullName属性就能够了。

学会了建立数组以及知道了数组包含的对象数量,如今来学习一下如何访问数组中的元素。实际上PowerShell的数组其实经过.Net类库中的数组来实现的,也就是说PowerShell.Net类库原有的实现上,增长了一些PowerShell便捷的访问接口,而实际操做的对象仍是.Net类库中的对象。使用数组时,须要你们记住数组的第一个元素的下标是“0”、数组的最后一个元素下标是数组长度减去1。例如:

PS C:/> $array = 1,2,3

PS C:/> $array.Length

3

PS C:/> $array[0]

1

PS C:/> $array[2]

3

PS C:/> $array[4]

PS C:/>

实际上,Count是属性Length的别名,这主要是为不一样对象提供一致性接口的技术。这里须要特别注意的是,当数组访问越界时,PowerShell是不会给出任何错误信息的,只会获得一个$null对象。

若是咱们已经有一个数组了,应该如何向这个数组中添加新的元素呢?在Perl中,你只需简单的使用你想使用的索引,而后存储上你想存储的数值就完成了任务。然而在PowerShell中,若是你使用相似的方法就会获得以下的结果:

PS C:/> $a = "My ThinkPad""My PC"

PS C:/> $a[0]

My ThinkPad

PS C:/> $a[1]

My PC

PS C:/> $a[2] = "My Mac"

数组赋值失败,由于索引“2”超出范围。

所在位置 :1 字符: 4

+ $a[2 <<<< ] = "My Mac"

PowerShell的错误信息指出:索引越界。解决这个的办法其实很简单,只要使用下面的代码就能够巧妙解决:

PS C:/> $a = $a + "My Mac"

PS C:/> $a

My ThinkPad

My PC

My Mac

PS C:/> $a[2]

My Mac

PowerShell中,数组实际上是一个大小固定的数据结构,若是须要向数组中添加更多的对象时,就必须使用加号“+”运算符。在执行“+”操做的过程当中,PowerShell实际上进行了下述操做:

1)        首先建立一个新的数组,该数组的大小可以存下运算结果的全部对象;

2)        将第一个数组的成员拷贝到新数组中;

3)        将第二个数组的成员拷贝到新数组中。

经过观察这个操做过程,很容易发现:若是数组中包含元素不少,并且频繁的向数组添加对象,必定会使PowerShell执行脚本时更慢。所以,咱们须要谨记:大多数时候,数组是PowerShell中的便捷的工具,可是应该避免频繁地对其进行添加操做。在.Net类库中提供了其余的数据结构来知足须要常常向数组中添加对象的需求。

相关文章
相关标签/搜索