다른 사람들이 언급했듯이 기술적으로는 배열에서 요소를 제거 할 방법이 없습니다. 배열의 요소 수를 수정하는 유일한 방법은 완전히 새로운 배열을 만들고 그 배열의 내용을 다른 배열로 복사하는 것입니다. 당신이 할 수있는 더 편리한 방법이 있지만, 결국 그것은 그들이 당신을 위해 실제로하고있는 것입니다. 바로 뒤에 있습니다.
이런 종류의 작업을 많이 수행하려는 경우 String
배열이 아닌 List(Of String)
클래스를 사용하는 것이 좋습니다. 다른 사람들이 지적했듯이 List(Of T)
클래스는 이러한 종류의 동적 함수를보다 단순하게 만들기 위해 특별히 설계되었습니다. , 당신이 이제까지 배열로 목록이 필요하면, 당신은 아주 쉽게 (효율적)이 같은 배열로 변환 할 수 있습니다 :
Dim myList As New List(Of String)()
myList.Add("Apple")
myList.Add("Banana")
myList.Add("Orange")
myList.RemoveAt(1)
Dim myArray() As String = myList.ToArray()
을하지만, 당신이 정말로 배열로 있어야하는 경우, LINQ는 그것을 확인하지 조금 더 쉬워. LINQ 네임 스페이스를 가져옴으로써 많은 새로운 LINQ 확장 메서드가 배열 (및 기타 목록 또는 열거 가능한 개체)에 추가됩니다. 예를 들어, 다음과 같이 LINQ의 Except
방법을 사용할 수 있습니다
Dim dynamic() As String = {"Apple", "Banana", "Orange"}
dynamic = dynamic.Except({"Banana"}).ToArray()
Except
방법이 열거 객체를 반환 것을 알 수 있지만 배열을. 배열로 변환하려면 위의 예제와 같이 LINQ의 ToArray
메서드를 추가로 호출해야합니다. 위의 예에서는 배열 중간에서 "Banana"
문자열을 제거합니다. 그러나 값을 알지 못하고 인덱스로 제거하려는 경우 LINQ는 이와 같은 인덱스로 필터링하는 방법을 제공하지 않습니다. 당신은 여전히하지만,이 같은 Except
방법을 사용할 수 있습니다 : 나는 Except
메서드에 전달 된 매개 변수 주위에 중괄호를 넣어 왜 당신이 궁금 할
Dim dynamic() As String = {"Apple", "Banana", "Orange"}
dynamic = dynamic.Except({dynamic(1)}).ToArray()
. Except
메서드가 실제로 매개 변수 목록 (특정하려면 IEnumerable
)을 사용하므로이 작업을 수행했습니다. 배열의 IEnumerable
(물론 덧붙여 IList
)을 구현하고 있기 때문에 메서드에 전달하기 전에 배열의 매개 변수를 래핑했습니다. 흥미로운 사실은 제거 할 항목이 여러 개인 경우 다음과 같이 한 명령에서 모두 수행 할 수 있다는 것입니다.
Dim dynamic() As String = {"Apple", "Banana", "Orange"}
dynamic = dynamic.Except({"Apple", "Banana"}).ToArray()
배열에서 항목을 제거 할 수 없습니다. 새 배열을 만들고 원하지 않는 색인 복사를 건너 뛰어야합니다. –
배열의 List (of String) instad를 사용하면 LINQ – Plutonix