2014-11-05 8 views
6

Próbuję znaleźć informacje o tym, kiedy należy użyć [string[]]$MyStuff. Czy jest to tablica znaków, czy tylko tablica z elementami, które jawnie są ciągami lub ...?W Powershell, jakiego rodzaju jest typ danych [string []] i kiedy go użyjesz?

Widziałem to używane w przykładach skryptów i to naprawdę nie jest jasne. Często widziałem, jak było używane w przypadku zmiennych, które otrzymują dane wyjściowe niektórych tekstów niestandardowego narzędzia lub jako typ danych dla parametru wejściowego funkcji.

Co oznaczają te dodatkowe nawiasy?

+0

Wszystkie twoje odpowiedzi były świetne. Podzięka ton faceci! – Cignul9

Odpowiedz

12

Definiuje tablicę łańcuchów. Rozważmy następujące sposoby inicjalizacji tablicy:

[PS] > [string[]]$s1 = "foo","bar","one","two",3,4 
[PS] > $s2 = "foo","bar","one","two",3,4 

[PS] > $s1.gettype() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  String[]         System.Array 

[PS] > $s2.gettype() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  Object[]         System.Array 

Domyślnie PowerShell tablica jest tablicą obiektów, które będzie oddanych do określonego rodzaju w razie potrzeby. Spójrz, jak to zdecydował, jakie rodzaje 5th Element każdego z nich są:

[PS] > $s1[4].gettype() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  String         System.Object 


[PS] > $s2[4].gettype() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  Int32         System.ValueType 


[PS] > $s1[4] 
3 
[PS] > $s2[4] 
3 

Zastosowanie [string[]] podczas tworzenia $s1 oznaczało, że surowy 3 przeszedł do tablicy został przekształcony do typu String w przeciwieństwie do Int32, gdy są przechowywane w tablicy Object.

1

Jest to tablica znaków. Na przykład:

[string[]] $var = @("Batman", "Robin", "The Joker") 

Tak więc można uzyskać dostęp do tablicy tak:

$var[0] 

"Batman Returns"

$var[1] 

Returns "Robin". I tak dalej.

Powiązane problemy