- - PR -
foreach の変数は読み取り専用なんですか?
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-10 19:50
ああっこれは釣り人の人だ (究極超人あーるより)
と言うわけで、釣られました(ウソ) まどかさん、mio さんの仰るとおりでした。 ちゃんと考えて投稿していないのがバレバレでしたね。ちょっと反省。 いきおいで書いた。 code ならなんでも良かった。 今は反省している。 # してねえだろ ![]() _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||||||||||||||
|
投稿日時: 2006-08-10 20:07
それは言わないお約束です^^; ただでさえ、一部でそう囁かれているのに。 #今プリプロセッサ作ってまして、これで使いたいと思ったんです。 #ちゃんとした理由があるんですよ orz [ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-08-11 01:13 ] | ||||||||||||||||||||||||
|
投稿日時: 2006-08-11 01:55
変数は読み取り専用(変数が参照型なら参照先は変えられない)
変数が参照しているインスタンスの操作は可能 C#のStringクラスが「内容の変更ができない」ことが問題なのでは? 「内容の変更ができる文字列クラス」をつくれば良いのでは? | ||||||||||||||||||||||||
|
投稿日時: 2006-08-11 03:09
わからない事だらけというか、つられてみるというか、私には難しい話というか。
MSDN
配列に限っては変更してもいいのですか?(ぇ、そうじゃなくて?、、) 繰り返し変数が読み取り専用な理由は、見方を少し変えて、IEnumerator.Currentが 読み取り専用(でなければいけない)だからと解釈してもいいのでしょうか。
for使ってるのかな。どうなんかな。というだけだったんですよね。スレ伸びたなぁ...( = =) | ||||||||||||||||||||||||
|
投稿日時: 2006-08-11 09:08
実際の実装の詳細はわかりませんが メンバインスタンスの型より内側に依存情報があるはずが無いと思いますが。 空メンバのクラスも実装可能ですし。 #でもGetEnumeratorの実装しだいか。。。 [ メッセージ編集済み 編集者: まどか 編集日時 2006-08-11 09:09 ] [ メッセージ編集済み 編集者: まどか 編集日時 2006-08-11 09:14 ] | ||||||||||||||||||||||||
|
投稿日時: 2006-08-11 09:08
基本的には、じゃんぬねっとさんに提示していただいた上記の情報で、使うべきでは無いことは明白になりました。 じゃあ「予期しない動作って何なの?」という気もしますが、これは型の性質に左右される部分が大きいので・・・と言うことなんじゃないのかな〜と勝手に解釈しました。
そうですね。 厳密にいうと、内容の変更ができるプロパティを持ったクラスとか、内容を変更するメソッドを持ったクラス、ということになるんでしょうね。(とボクなりに理解しました。)
つりじゃないですってば(^^;) ・・・ううっ、べるさんまで・・・orz
まあ、先の「僕の理解」で行くとOKになるのですが、確かに MyCollection でforeach にどうやって対応させているのかわからないですからねぇ。
そうなんですよね^^; ボクはただ皆さんの知識についていくのに精一杯でした。 皆さんに感謝です。ありがとうございました _(_@_)_ | ||||||||||||||||||||||||
|
投稿日時: 2006-08-11 09:33
ま た 釣 り 糸 が ...
いやいや、ややこしいので止めた方が良いでしょう。 そもそも、foreach で値をセットして何かをするようなシナリオが想定できないです。 また、そういう使い方をしたいと思ったこともありません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||||||
|
投稿日時: 2006-08-11 10:00
一度 C++ を体験して、イテレータのいろいろな性質(特性)を理解したら
より安定な認識に達すると思います。 > 予期しない動作を防ぐため、コレクション内容の変更には使用しないでください。 マルチな処理での排他とかの話かも。 |