Trochę walczę o usunięcie pierwszego wiersza (identyfikator przedmiotu) z tablicy.PowerShell Usuń element [0] z tablicy
$test.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Aby wyświetlić wszystkie opcje próbowałem ,$test | gm
i wyraźnie stwierdza:
Remove Method void IList.Remove(System.Object value)
RemoveAt Method void IList.RemoveAt(int index)
Więc gdy próbuję $test.RemoveAt(0)
pojawia się błąd:
Exception calling "RemoveAt" with "1" argument(s): "Collection was of a fixed size."At line:1 char:1
+ $test.RemoveAt(1)
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NotSupportedException
Więc w końcu znalazłem here że moja tablica musi być typu System.Object
, aby móc używać $test.RemoveAt(0)
. Czy najlepiej jest deklarować wszystkie tablice na początku skryptu jako listę? A może lepiej przekształcić tablice z $collection = ({$test}.Invoke())
na listę później, kiedy ta funkcja jest potrzebna?
Jakie są typy i wady obu typów? Dziękuję za pomoc.
Przegłosowano, to mi się udało. I jest ładne i zwięzłe. – Spikee
Może zachowywać się niepoprawnie, jeśli tablica zawiera zduplikowane wartości. –
@RonMacNeil, dobry punkt. Zaktualizowałem swoją odpowiedź. –