- - PR -
foreach の変数は読み取り専用なんですか?
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-10 16:12
ナンダカヨクワカラナイヤリトリヲシテルケド・・・
じゃんぬ氏の言った通り、「forとforeachの違い」をよく考えてみたらどでしょ? 確か、以前読んだ本(.netじゃありませんが)によると、foreachは、イテレータを使ってすばやく連続処理出来るのが強みなのです。 | ||||||||||||||||
|
投稿日時: 2006-08-10 16:15
なにやら、このスレッドは少々ややこしいことになっていますね。 mio さんもその後、前者なのではないかと見ているようですし...
いえいえ、まどかさんに対してではないです。(;^-^) (実際、まどかさんの投稿と入れ違いに投稿しています)
リファレンスに書いてある内容とは、ちょっと違いますよね? リファレンスに書いてある内容、ちょっとややこしいのですね。 もう 1 度、思い込みを捨てて見てください。 # こ の ス レ ッ ド は、 誤 解 の 多 い イ ン タ ー ネ ッ ツ で す ね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-08-10 16:17
最初の例だとコレクションメンバがStringですよね? Stringはクラスで値の変更により内部でNewされます。 したがって コレクションメンバのポインタそのものが変更されるのでだめなのでは? と書かせていたきました。 | ||||||||||||||||
|
投稿日時: 2006-08-10 16:43
うーん…。
元々の処理がうまくいかない理由は、元のコレクション内の参照とsの参照は別ものなんだから、sだけ書き換えても意味がない、というので決着がつくとは思いますが。 foreachの意味論になっちゃってますか? >mio さんもその後、前者なのではないかと見ているようですし... ああ…すみません、「あえてforeachでやるとしたら」ということです。 こういう処理でforeachは、ふつう出てきませんよね。 | ||||||||||||||||
|
投稿日時: 2006-08-10 16:44
ちょっと面白くなってきた自分がいます![]() 僕の中のイメージでは、お前らプライマリキーを勝手に書き換えたらインデ ックスを作り直す羽目になってまた数えなおしになるだろうが!(マイクたた き付け&ゴング&武藤の物まね) という風に理解しています(DB 風に考えました)。
これだと、foreach の時点で「僕達」というテーブルを「名前」というプライマ リキーで列挙しているので、途中で名前が若人あきらから我修院達也に変 わったらどこまで数えたか分からなくなって、だんごを買いに行くんだかどっ こいしょを買いに行くんだかわからなくなるでしょうが!がっかりだよ!と親切 なコンパイラさんが教えてくれているのだと。
この場合は「名前」(プライマリキー)が変わるわけではないので問題がない のかなぁと。 > # こ の ス レ ッ ド は、 誤 解 の 多 い イ ン タ ー ネ ッ ツ で す ね。 まったくです(お前が言うな)。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||||||
|
投稿日時: 2006-08-10 16:56
想定される実装ではそうでしょうね。(スコープを考えても)
意味論を出したのは、どうしてもやりたいかのように見えたので、 それは望ましい実装なのかどうかも含めて、止めたかったということです。 正直、これに関しては、私も勘違いしていました。orz
了解です。(そして、最初の返信内容と被りますが同意です) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-08-10 19:13
僕クラスのプロパティ値の変更なので、
これとなんら変わりませんよね? | ||||||||||||||||
|
投稿日時: 2006-08-10 19:28
んん…?(^_^;
よく見てなかったのがバレバレですが、プライマリキーは「名前」じゃなくて「s」ではないかと(^_^; |