例えば { 3, 6, 5 } という配列があった時、この配列の要素の順番を反転(逆に)して、{ 5, 6, 3 } にする方法を紹介します。
なおここで紹介する方法は順番を反転させるだけで、要素を降順に並び替える方法ではありません(すでに要素が昇順で並んでいるならば、こちらの方法で反転させて、降順にすることはできます)。要素を降順(あるいは、昇順)に並び替える方法は、「配列やコレクション内の要素を並び替える」をご覧ください。
配列の反転であれば、Array.Reverseメソッドを使ってできます。
'基になる配列 Dim ary As Integer() = New Integer() {3, 6, 5} '要素の順番を反転させる Array.Reverse(ary) 'ary は { 5, 6, 3 } となる
//基になる配列 int[] ary = new int[] { 3, 6, 5 }; //要素の順番を反転させる Array.Reverse(ary); //ary は { 5, 6, 3 } となる
また、ArrayListやList<T>などのコレクションにもReverseメソッドがあり、これを使用して反転させることができます。
'Imports System.Collections.Generic '基になるList Dim lst As New List(Of Integer)() From {3, 6, 5} '要素の順番を反転させる lst.Reverse() 'lst は { 5, 6, 3 } となる
//using System.Collections.Generic; //基になるList List<int> lst = new List<int> { 3, 6, 5 }; //要素の順番を反転させる lst.Reverse(); //lst は { 5, 6, 3 } となる
補足:ArrayやコレクションのReverseメソッドは、反転させる要素のインデックス範囲(開始位置と長さ)を指定して実行することもできます。
.NET Framework 3.5からは、Enumerable.Reverseメソッドを使用して配列やコレクションを反転することができます。この方法では反転されたシーケンスが返されますので、反転する配列やコレクション自身に変化はありません。
'Imports System.Linq '基になる配列 Dim ary As Integer() = New Integer() {3, 6, 5} '要素の順番を反転させたシーケンスから、配列を作成する Dim reversedAry As Integer() = ary.Reverse().ToArray() 'reversedAry は { 5, 6, 3 } となる
//using System.Linq; //基になる配列 int[] ary = new int[] { 3, 6, 5 }; //要素の順番を反転させたシーケンスから、配列を作成する int[] reversedAry = ary.Reverse().ToArray(); //reversedAry は { 5, 6, 3 } となる
ListやArrayListなどのコレクションの場合は、普通にReverseメソッドを呼び出そうとすると、前に説明したReverseメソッドを呼び出します。よってEnumerable.Reverseメソッドを呼び出す場合は、直接Enumerable.Reverseメソッドを呼び出すか、コレクションをIEnumerableにキャストして呼び出すか、などとします。
'Imports System.Collections.Generic 'Imports System.Linq '基になるList Dim lst As New List(Of Integer)() From {3, 6, 5} '要素の順番を反転させたシーケンスから、Listを作成する Dim reversedList As List(Of Integer) = Enumerable.Reverse(lst).ToList() '次のようにもできる 'Dim reversedList As List(Of Integer) = ' DirectCast(lst, IEnumerable(Of Integer)).Reverse().ToList() 'reversedList は { 5, 6, 3 } となる
//using System.Collections.Generic; //using System.Linq; //基になるList List<int> lst = new List<int> { 3, 6, 5 }; //要素の順番を反転させたシーケンスから、Listを作成する List<int> reversedList = Enumerable.Reverse(lst).ToList(); //次のようにもできる //List<int> reversedList = ((IEnumerable<int>)lst).Reverse().ToList(); //reversedList は { 5, 6, 3 } となる