1 名前:デフォルトの名無しさん [2007/01/12(金) 15:57:21 ] 前スレVB.NET質問スレ (Part18) pc10.2ch.net/test/read.cgi/tech/1161250878/
175 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 02:33:34 ] >>163 165が言うようにInvalidateはウィンドウ全書き換え。 で、ウィンドウのリサイズや別ウィンドウが重なった後の書き換えは 単純に矩形にならず、複雑な形でクリッピングする処理が入る。 リサイズでも全書き換えしたいなら SetStyle とか見てみ
176 名前:デフォルトの名無しさん [2007/01/29(月) 03:26:07 ] 二次元配列 Array1(3,3)とArray2(3,3)の中身を比べるプログラムを作りたいんですけど どなたか助言をお願いします。 Array1とArray2の中身すべてに Integer型の0、もしくは9が格納されています。 Array1とArray2の中身を見比べて全く一緒ならtextbox1に「○」と表示させたいと思っています。 (例) Array1 Array2 001 001 101 101 ←中身が全く同じなので「○」 000 000 Array1 Array2 001 001 101 111 ←中身が違うので「×」 000 001 自分で調べてみてループや判定文を使うのだろうと思って頑張ったのですが 動作してくれません。初心者ですみませんがよろしくお願いします。
177 名前:デフォルトの名無しさん [2007/01/29(月) 03:27:28 ] >>176 ×Integer型の0、もしくは9が格納されています。 ○Integer型の0、もしくは1が格納されています。 間違えました。ごめんなさい。
178 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 04:00:05 ] >>176 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer, j As Integer Do For i = 1 To 3 For j = 1 To 3 If Array1(i, j) <> Array2(i, j) Then TextBox1.Text = "×" Exit Do End If Next Next TextBox1.Text = "○" Exit Do Loop End Sub
179 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 05:12:45 ] 名前空間のステートメントが無効です。 全く何をすればいいのか解らない・・・です・・・
180 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 11:51:09 ] 自作クラスのオブジェクトをCStr(MyObj)のように使いたいのですが、出来ますか? 出来るとしたらどんなメソッド(プロパティ?)を実装すればいいですか?
181 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 11:58:50 ] ToString()をオーバーライドしたらよかっぺ
182 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 12:37:44 ] >>175 回答する能力ないくせに無理して答えなくていいんだよ。 人の張ったサンプルを良く見たか?w
183 名前:デフォルトの名無しさん [2007/01/29(月) 13:41:26 ] すんません。 Dim s() As String と宣言して、どこかでインスタンスを作るとして、 インスタンスが既に出来ているのか居ないのか 判断する方法を教え下さい。
184 名前:デフォルトの名無しさん [2007/01/29(月) 13:45:04 ] IsNothingとか Is Nothing とか。
185 名前:183 [2007/01/29(月) 15:28:32 ] >>184 様 もう少し具体的にお願いします。 Dim s() As String 'If s(0) Is Nothing Then <- ここんとこ ReDim s(0) End If
186 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 17:33:22 ] >>185 184じゃない↓がでええやろ? If s Is Nothing Then
187 名前:183 [2007/01/29(月) 17:46:27 ] >>186 ダメみたいです。(^^; 「変数's'は値が割り当てられる前に使用されいます。・・・・」 と出ます。
188 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 17:55:02 ] >>187 それは警告だから動くだろ? 警告が気に入らないなら↓のようにしとけ Dim s() As String = Nothing
189 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 17:56:10 ] Dim s() As String '変数初期化します。 ReDim s(0) で駄目なの???
190 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:21:13 ] >それは警告だから動くだろ? にVB厨の神髄をみた
191 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:23:49 ] ReDimなんか使うんじゃねぇ
192 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:27:37 ] >>183 だから大人しく入門書をまず読めって。 人様に質問なんざそれからにしろよ。 お前さんのやってることは、九九も知らないのに連立方程式の解き方を教えろと言ってるのと同じだ。 九九のレベルからいちいち掲示板で質問するつもりか? そんなんじゃどんなに幸運でも100年かかるわw
193 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:39:22 ] ていうか、VBって無くなるみたいだからやらない方がいいんじゃないの?
194 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:43:20 ] >>193 ソースは?
195 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:52:28 ] Dim x(0) ReDim x(100) はVB6だとエラーになるが、VB.NETでは大丈夫というかIs Nothingを省きたいときの推奨の方法みたいだ。 ただ可変配列を使いたいときはコレクションの使用も考慮したほうがいい。
196 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:58:56 ] >>194 公式情報ではなくて、以前C#のスレに書いてあった。 VBは無くなるからC#にしておけとの事だとか。
197 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:59:45 ] kuma-
198 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 19:58:35 ] >>196 ゲイツ様はC#をあきらめてVBはこれまで通りプッシュされると聞き及んでいますが、 あなたはこれを信用しますか?
199 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 20:00:00 ] 下らんそんなに馴れ合いたいのなら他所行きな
200 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 20:14:27 ] 誘導、ここで好きなだけやってくれ 【VB.NET】VS2005 選ぶならどっち?【C♯】 pc10.2ch.net/test/read.cgi/tech/1106538237/l50
201 名前:183 [2007/01/29(月) 21:10:59 ] >>188 >>Dim s() As String = Nothing サンクス、うまくいきました。 >>189 配列のサイズでデーターの大きさを所得したいので。 If s IsNot Nothing Then ReDim Preserve s(s.Length) Else ReDim s(0) End If こんなことを考えてました。 >>195 実際はジェネリックでやってます、それと疑問は別物で。 >>193 客の要望でどっちでも書いてます。 C丼でも大してかわりが有りません。
202 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 21:23:04 ] 201みたいなプログラマの書いたコードは怖くて使えんな。 なんだよその「動けばいいじゃん」っていう発想w 本当にそれでいいのか? どんなショボい入門書にも書いてあることが理解できてないのに
203 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:21:51 ] >>183 初期化はちゃんとした方がいい。 >>188 はちょっと乱暴だが…w
204 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:23:49 ] それ以前に参照型って概念が理解できてないんでしょ
205 名前:デフォルトの名無しさん [2007/01/29(月) 22:24:45 ] >>190 C#だったらどーするの?
206 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:32:09 ] だから「初期化しろ」って警告なんだろーが
207 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:34:07 ] 初期化するだろ普通は
208 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:35:03 ] 190も馬鹿だが>>205-206 もな 初期化しろ?w ちょっとニュアンス違うよ
209 名前:デフォルトの名無しさん [2007/01/29(月) 22:41:13 ] >>208 だからVB厨じゃなかったらあの警告にどう対処するのか教えてよ。
210 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:43:56 ] >>208 日本語に不自由なのも大概にしとけよw 対処すべきだ、というニュアンスを匂わしてる奴を馬鹿だといってるんだけど
211 名前:210 mailto:sage [2007/01/29(月) 22:44:41 ] >>209 の間違い
212 名前:デフォルトの名無しさん [2007/01/29(月) 22:47:18 ] ああなんだ190ってあいつか。 おめーがアンカーつけねえからわかんなかったじゃねえか。
213 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:47:27 ] なにこの肥溜めスレ
214 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:57:13 ] 初期化しないでも警告だけでコンパイル通るの? VB.netって。 そうなら>>190 はそういうこと言ってるんじゃないのかな
215 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:58:15 ] なんか祭ってるな。 >>212 お前の知り合いか?
216 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:59:31 ] むしろいちいち初期化しないとコンパイル通らない言語って具体的になんだよw
217 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 23:01:01 ] >>216 C#
218 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 23:02:52 ] おいおいw
219 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:17:17 ] >If s IsNot Nothing Then > ReDim Preserve s(s.Length) >Else > ReDim s(0) >End If >こんなことを考えてました。 こりゃいったいどういうプログラムだ。
220 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:19:56 ] C#は初期化しないと通らんぞ。 正確にはどこでも初期化せずに、いきなり参照すれば、だが。
221 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:28:11 ] >>220 もういい馬鹿は糞して寝てろw
222 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:34:33 ] フィールドなら通るから勘違いしてんのか?
223 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 01:23:07 ] ローカル変数は初期化しないで参照することはできんな。
224 名前:183 [2007/01/30(火) 08:11:30 ] >>219 あるデーターを採取して配列に入れる、入れる前に 配列の個数を1つ増やす、値の代入は本質問と 無関係なため省略してある。 蛇足だが、その後は、プログラム終了時は、 配列はシリアル化してXMLファイルに 書き込み、次の起動時に配列に読み込む。 データーの数又データーの有無は、配列の要素数で 判断する。 >>202 何が書いてあるのだ。 あなたのコードを見せていただけますか。 >>203 >>201 が初期化のコードだと言うことがわからんかな。
225 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 08:15:38 ] 可変長なコレクションに配列は無いわ
226 名前:200 mailto:sage [2007/01/30(火) 08:26:08 ] >>224 馬鹿にして悪いけどしょうがないよ、あんた本当に基本がわかってないし、 自分が基本がわかってないっていう自覚すらないから。 例えば値型と参照型の区別、なんていう基礎の基礎からしてわかってないでしょ。 .NETにおける配列の意味もわかってない。 それだけでなくセンスもない。 理解できないだろうけど>>201 みたいなコードってありえんから。
227 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 10:21:11 ] 配列の個数を1増やす や め て く れ 何故かVB6時代によくみたコードだな。 だがVB6でもこれはやめてほしい。
228 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 10:25:39 ] で、要素数-1がデータ数かよ。 要素0もしくは最後か?ともかく余った要素には何が入ってんだ?
229 名前:デフォルトの名無しさん [2007/01/30(火) 10:29:30 ] 初歩的な質問で申し訳ないのですが、画面のリストボックスに スクロールが必要でない時も最初から縦スクロールバーを表示させるにはどうしたら良いでしょうか? スクロールが必要な際は表示されるのですが、そうでない時はスクロールバー自体が消えてしまいます。
230 名前:デフォルトの名無しさん [2007/01/30(火) 10:32:37 ] 間違えました。 ListBoxではなく、ListViewでした。
231 名前:デフォルトの名無しさん [2007/01/30(火) 12:27:13 ] だから一晩かかってるのに何故 List(of xxx)とか ArrayListにしないの? シリアル化だって勝手にやってくれるし。
232 名前:183 [2007/01/30(火) 12:53:29 ] >>231 201をよく嫁 実際はListジェネリッククラスを使って、 インデクサで処理してる。 >>226 おまえが1番馬鹿なようだな。 いやもっと馬鹿が居た。 >>228
233 名前:188 mailto:sage [2007/01/30(火) 13:05:42 ] おいらのレスでずいぶん盛り上がりましたねw
234 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 13:42:48 ] >>232 VBの配列の指定数は要素数じゃないだろってだけの話だろう? 馬鹿馬鹿ばっかり言ってないでなぜ馬鹿なのか分かるように言ってくれよ
235 名前:デフォルトの名無しさん [2007/01/30(火) 15:35:32 ] どなたか>>229-230 に回答を…。 ググってみたら同じような質問があったのですが、それにも回答がついてませんでした。
236 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:46:37 ] ArrayListって要素を追加した順番に保存されますか? またfor eachで取り出す場合はその順番は保証されていますか?
237 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:50:36 ] >>235 適当に空行足しておけばいいだろ。
238 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:08:05 ] >>236 そらそうだ
239 名前:デフォルトの名無しさん [2007/01/30(火) 16:11:25 ] >>236 順番に保存する他にどんな保存方法があるんだ? For Eachは要素を列挙する関数なんで、順番は保証されない。 とは言ったものの実際は順番に出てくるが。 正式にはインデクサを使え。
240 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:24:18 ] やっぱりfor eachは多用しないように気をつけようっと。
241 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 17:00:59 ] >>239 嘘つけw
242 名前:デフォルトの名無しさん [2007/01/30(火) 17:33:39 ] >>237 通常IE等でスクロールがない画面で表示されるようなグレイアウトの状態でスクロールバーを表示したいので 改行を足すのはちょっと目的と変わってしまいます。 でもお答え頂きありがとうございます。 引き続きどなたかわかる方、回答お待ちしています。
243 名前:デフォルトの名無しさん [2007/01/30(火) 17:34:05 ] 反復処理の順序 For Each...Next ループを実行すると、コレクションの反復処理の順序は GetEnumerator メソッドが返す列挙子オブジェクトの制御下に置かれます。反復処理の順 序は、Visual Basic ではなく、列挙子オブジェクトの MoveNext メソッドによって決まります。 したがって、コレクションのどの要素が最初に element に返されるかや、特定の要素の後 にどの要素が返されるかを予測することはできません。 特定の順序でコレクションを反復処理する必要がある場合は、そのコレクションによって公 開される列挙子オブジェクトの特性を把握していない限り、For Each...Next ループが適切な 選択肢とは言えません。For...Next ループや Do...Loop ループなど、別のループ構造を使 用した方が、信頼できる結果が得られます。 ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_vbalr/html/ebce3120-95c3-42b1-b70b-fa7da40c75e2.htm
244 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 17:37:55 ] Array"List"のListってのは何を意味してるか考えろよ。 列挙子オブジェクトの特性が把握できてるんだよ。w この場合。
245 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 17:41:43 ] おぉ!ということはfor eachでも問題ないんですね。 かっこいーからfor eachのほうを使うことにします。
246 名前:デフォルトの名無しさん [2007/01/30(火) 18:13:46 ] >>242 なんの為か知らんがどうして表示したかったら、 ハンドルにAPIのShowScrollBarを投げろ。
247 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 18:42:22 ] >>244 それって確証ある? つまり明文化された仕様として保障されてるか? 俺は怪しいと思うけどどうなんだろう。 >>239 の言うように、Enumeratorは(クライアントのデータ構造が仮にリストでも) リストを手繰っていくような動作を実装することは義務付けられてないでしょ。 自分でEnumeratorみたいの実装すること考えたって、パフォーマンス優先するなら リストを手繰るような実装は俺ならしないけど。
248 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 18:57:18 ] どんな実装するってのか聞いてみたい。
249 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 19:03:40 ] 例えばリストが、常に上の方に詰められる自己参照構造体配列(の配列)で実装されてたら、 Enumeratorは構造体配列を上からシーケンシャルに吐き出せば済むでしょ。
250 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 19:28:50 ] んーなんだそういう話か… んー なんていうかさ、自然に考えられる実装ってあるじゃん。 ある意味特殊な構造の実装になってる場合なんかは、 何を重視するかで実装は変わってくるが、 そういう場合は明確にドキュメントするよね? で内部がただの配列であり、配列と同様に扱えると明記されてる ArrayListで、予想外の順序で列挙される実装なんて有り得るか? 逆にそういう実装なら絶対に明記されてるだろ。 で保証はないって話は理解出来なくもないんだが、 現実はもっと怪しい仕様??なんてものがいっぱいあって、 そういうことと比べれば実質十分信用していいレベル。 まあ、絶対に明記されてる仕様にしか、一ヶ所たりとも依存しないってんなら 好きにすればいいけど
251 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 19:30:44 ] >>247 仕様はないでしょうな 現在存在するすべてのArrayListの実装がリスト順に返しているという事実と、 今後現れる実装が互換性を維持してくれるだろうという希望に頼るしかなかろう
252 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 20:30:49 ] >>250 わかんないお人だなあ。 だからさあ、リスト構造をしているのは、 換言すればリストの「ふり」をするのはListなりArrayListなのであって Enumeratorじゃないんだよ。
253 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:11:30 ] いやそういうことじゃなくて現実の話をしてる リストのセマンティクスをもつコレクションがリストじゃない並びの列挙を行うなら、 現実にはドキュメントされてる、普通。 ArrayListとかは実装が配列になってると明記されてたはず。 この状態で異なる列挙実装なんて普通考えられない。 もしそうなってるなら明記されてるはず、現実には。 他の人間が実装したリストはそりゃ分からんが。
254 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:35:36 ] なんかインターフェイスと実装をごっちゃに議論してるような気がするんだけど
255 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:38:03 ] ??
256 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:40:50 ] >>253 倒錯してると思うよ。 普通逆でしょ。 IEnumeratorの要求仕様以上のspecial feature があるなら明記するよ。 明記してないなら、それは「期待すんなよ」ってことだと解釈するのが普通だと思うけど。 っていうか、ArrayListのがインデックス順に整列された配列、なんて記述を見た記憶は 俺にはないなあ。
257 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:51:25 ] >>254 たしかに>>256 で初めてEnumeratorに I が付いたな
258 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:58:32 ] >>257 アホでしょお宅w
259 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:10:34 ] ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_fxfund/html/71807ea7-9180-48a6-916f-35a5251d477f.htm msdn2.microsoft.com/ja-jp/library/hwyysy67 (VS.80).aspx よくよめ
260 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:13:07 ] ArrayList クラス 必要に応じてサイズが動的に増加する配列を使用して、IList インターフェイスを実装します。
261 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:26:17 ] >>259 そんな隅っこにこっそり書いてあるのなw なるほど勉強になった。 まあでも、個人的には本当にその記述信用していいのかな、 って気がしないでもない。 ちょっとありえない実装のような気がするんだよね。 ところでList(of T)に関してはどうなんだろう。 >>260 「配列を使用して」、っていうのは「正体はベタな配列に過ぎないんですよ」 って意味じゃないよ。
262 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:56:36 ] いまいちわからんなぁ >まあでも、個人的には本当にその記述信用していいのかな、 >って気がしないでもない。 >ちょっとありえない実装のような気がするんだよね。 ArrayListみたいなのの実装で列挙が順序通りってのが、なんでありえない実装なわけ? >「配列を使用して」、っていうのは「正体はベタな配列に過ぎないんですよ」 >って意味じゃないよ。 言ってる意味がちょっとよく分からん。
263 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:07:34 ] お前らもうええわ。 メアド交換して勝手にやってろ
264 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:14:05 ] >>262 文盲かよ。。だから処理の効率が悪いからだって何度も言ってるじゃん。。 順番にアクセスしたいのなら普通にインデクサ使えば良いだけだし。 後半の話も書いてるでしょ。 配列を使用して、というのは内部的に配列を使ってListが実装されてるって意味であって… まあ、リストとかキューとか自前でデータ構造実装したことないなら理解できないかもね。
265 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:46:46 ] あのさ、何よりパフォーマンスだけが重要ならそもそも列挙なんて仕組みはいらんだろうに そもそも列挙実装の仕組みとしては単純なインデックスが一番効率的だろうが まあこれは内部実装が単純な配列の場合だが。 列挙なんて効率悪いものなんていらんから、順序通りの列挙の実装はありえないつてか? お前の言ってること全然理解出来ねーよ 内部実装が単純な配列のコレクションなら順序通りが一番当たり前だろ。 なんでありえないわけ? わざわざ順序通りにならないようにすんのか?なわけないよな。 ただのインデックス使えばいいってのは状況によってはもちろん分かるが だからありえないってのは理解できん どうしてもありえないってんならSSCLIでソースみてみろよ。
266 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:58:05 ] インデックスでアクセスできるコレクションの列挙がインデックス順じゃないほうがありえないよな
267 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:02:40 ] お前ら、VBはそんなアホらしいことを考えなくても十分に使えるという点が 最大のセールスポイントだということを知らないのか?
268 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:10:30 ] "(" を打ったとき ToolTip に "Index As Object" て出てくるやつはインデックス順で並んでいるやつで "(" を打ったとき ToolTip に "Key As Object" て出てくるやつはインデックス順で並んでいないやつ と俺は解釈している。
269 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:12:52 ] 大体ArrayListの for each 使うくらいでビビルような偏執狂が VBを使ってるということ自体納得がいかんわw
270 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:15:08 ] >>266 そもそもリスト構造っていうのがどういうデータ構造なのかわかってるのかと。。 だから連結リスト構造だったら列挙するときにわざわざインデックス順にやる、 なんてアホな実装するわけないじゃん。 連結リストじゃなかったら、例えばInsertRangeメソッドを実装するのに いちいちコピーしなきゃならんでしょ。 連結リストならインサートする前後のポインタを付け替えるだけで済むのに。
271 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:28:38 ] >>264 内部的に配列を使って… いや最初からそういう意味で言ってるだろ。 それに対して 「ベタな配列に過ぎないんですよ」って意味じゃないよ っていうのが、どういう意味・意図なのかよく分からんてだけだ 内部的に配列を使って実装したコレクションの列挙が 内部配列の順序通りなんて一番ありえるパターンだろ なんで「自分でデータ構造実装したことないなら理解出来ないかもね」 になるんだよ。 内部的に配列を使ってはいるがダイレクトな配列の使い方はしていない実装は もちろん有り得るが そうならArrayListみたいな説明の仕方はしない、普通は。 明らかに誤解を招く書き方だから。 で現実にArrayListは単純な配列をダイレクトに使って実装されてる。
272 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:44:19 ] >>270 にとって.NETのコレクションクラスってありえない実装なんだな
273 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:56:35 ] 今は.NETのコレクションでのリストの話をしてるのよ。 ArrayListとかの。 で、連結リストの話でも、インデックス順序の列挙はありえなくもなんともないと思うんだが。 連結リストの場合、どういうのが普通はなんだ? むしろリンクを辿るのが一番普通だと思うが…単純な連結リストの場合
274 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 02:00:44 ] リスト構造だとインデクスアクセスが定数時間で出来んだろうが 可変長配列として扱いやすくするコレクションなのに インデクスアクセスを非効率にしてどうすんだよ。
275 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 02:09:55 ] っと、ここでのリスト構造ってのは連結じゃない話か なら上のインデクスのはなしはとりあえずなし。