Почему Length () не отображается в Get-Member массива? - PullRequest
0 голосов
/ 30 октября 2019

Когда я передаю массив в Get-Member, метод Length () не отображается, даже если он существует.

Почему это так, и что мне нужно сделать, чтобы отобразить всеучастники?

> $a = @(0,1)
> $a.Length
2
> $a | Get-Member

   TypeName: System.Int32

Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value), int IComparable.CompareT... Equals      Method     bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable[int].Equals(int ... GetHashCode Method     int GetHashCode()
GetType     Method     type GetType()
GetTypeCode Method     System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
ToBoolean   Method     bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte      Method     byte IConvertible.ToByte(System.IFormatProvider provider)
ToChar      Method     char IConvertible.ToChar(System.IFormatProvider provider)
ToDateTime  Method     datetime IConvertible.ToDateTime(System.IFormatProvider provider)
ToDecimal   Method     decimal IConvertible.ToDecimal(System.IFormatProvider provider)
ToDouble    Method     double IConvertible.ToDouble(System.IFormatProvider provider)
ToInt16     Method     int16 IConvertible.ToInt16(System.IFormatProvider provider)
ToInt32     Method     int IConvertible.ToInt32(System.IFormatProvider provider)
ToInt64     Method     long IConvertible.ToInt64(System.IFormatProvider provider)
ToSByte     Method     sbyte IConvertible.ToSByte(System.IFormatProvider provider)
ToSingle    Method     float IConvertible.ToSingle(System.IFormatProvider provider)
ToString    Method     string ToString(), string ToString(string format), string ToString(System.IFormatProvi... ToType      Method     System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)
ToUInt16    Method     uint16 IConvertible.ToUInt16(System.IFormatProvider provider)
ToUInt32    Method     uint32 IConvertible.ToUInt32(System.IFormatProvider provider)
ToUInt64    Method     uint64 IConvertible.ToUInt64(System.IFormatProvider provider)

Ответы [ 2 ]

4 голосов
/ 30 октября 2019

Свойство .Length относится к объекту массива в целом.

Согласно этой статье от MS Об массивах

... PowerShell отправляет элементы по одному, а Get-Member возвращает тип каждого элемента вмассив, игнорируя дубликаты ...

В статье также говорится о том, чтобы использовать Get-Member -InputObject $a для просмотра методов, свойств и т. д. объекта массива.

0 голосов
/ 30 октября 2019

Вместо использования конвейера, если вы используете get-member напрямую:

Get-Member -InputObject $a

Я заметил одну вещь: если вы введете $a.GetType(), вы соответствующим образом увидите, что у вас есть объект System.Array. ,Однако, когда вы вводите $a | gm, он показывает System.Int32, как будто Powershell перечисляет массив после канала.

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