配列の第N行を削除するには?


潜水艦  2009-05-23 17:27:07  No: 141964

VB2008ユーザーです。リストボックスの第N行はRemoveAt(N)を使えば
削除できるのですが、コントロールを使用しないで配列そのものを指定行を
削除する方法を教えてください


ざうるす  2009-05-23 18:51:18  No: 141965

配列とリストボックスはどのような関係にあるのでしょうか?


潜水艦  2009-05-24 03:50:51  No: 141966

ざうるすさん
>配列とリストボックスはどのような関係にあるのでしょうか?
質問文が誤解を招いたかも知れませんが
僕がリストボックスを引き合いに出したのは、行を指定して項目を削除したり、指定の行に項目を挿入したり、その他もろもろの、いじくりまわすのに
リストボックスが便利が良いのです。リストボックスに関する情報はたくさん仕入れられますし、...。ところが配列っていうやつはなんか敷居が高いというか、実態が目で見えないですしね。わかりにくいんです。
10個程度の項目なら、リストボックスを使ってプログラムを書けば
僕のようなプログラムへたくそマンでも、実現できることが、いざ
リストボックス抜きで配列でプログラムを書いたらとやってみると
わけがわからなくなるんです。その一例として、例えば
12345と配列の要素があるとして、配列の(2)を削除するという場合にですね。配列(2)は3ですからそれを削除して1245になりますよね。
しかも要素数は5から4に減少しますよね。
リストボックスだと簡単に処理できるのですが、もしコントロールは使っちゃいけない、配列を使え
という条件だとすると、
a(2)=a(3)
a(3)=a(4)
こんな感じで繰り返すしか方法はないんでしょうか。
それともvbには、指定した要素番号の配列を削除するメソッドとかコマンドとかがあるんでしょうか?


Hongliang  2009-05-24 04:40:01  No: 141967

VB の配列は固定長なので、一度作った後で要素を追加したり削除したりはできません。
追加や削除が可能な可変長のコレクションとして、List(Of T) クラスなどが用意されています(T は要素の型です)。使い方はヘルプのサンプルコードとかを参考にしてください。

> ところが配列っていうやつはなんか敷居が高いというか、実態が目で見えないですしね。
デバッガを使えば配列の中身を参照できますが、そういうことではないですか?


潜水艦  2009-05-24 20:46:38  No: 141968

Hongliang さん  ありがとうございました。
僕の頭の関係で時間がかかりましたが、やっとわかりました。
ms-help://MS.VSCC.v90/MS.msdnexpress.v90.en/fxref_mscorlib/html/a0502ae1-0f32-cf37-09df-99da0589a6ab.htm

List(Of T) ヘルプのサンプルコード  
これで万事OKです(と思います)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加