[array]调用地址方法中的奇怪行为

时间:2012-04-06 14:36:56

标签: powershell

我在Powershell 2.0中的Win XP和Windows Server 2008 R2上测试了这个:

$a = 1,2,3,4 # a simple [object[]] but any other Type is good

如果我这样做:

$a.addres()

返回错误是(正确):

Method invocation failed because [System.Object[]] doesn't contain a method named 'addres'.

但如果我这样做:

$a.address()

错误是:

Cannot find an overload for "Address" and the argument count: "0".

但是这样做:

$a.address(2)

使用'Problem Event Name: APPCRASH'

关闭powershell控制台

从那个[system.array]开始还没有一个名为address的方法,powershell如何尝试调用现有方法?

2 个答案:

答案 0 :(得分:3)

[System.Array]具有.Get,.Set和.Address方法,这些方法可通过.Net运行时获得,但通常不在Powershell代码中使用。看看这个StackOverflow article

答案 1 :(得分:1)

我之前提交过这个bug。他们在V3中修复了它,并发布了Keith发布的异常消息(可能会破坏运行时的稳定性)

https://connect.microsoft.com/PowerShell/feedback/details/561865/powershell-crashes-when-calling-address-method-on-object-array