C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Session変数(内の関数レベル変数)のスコープ


(過去ログ 109 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■64720 / inTopicNo.1)  Session変数(内の関数レベル変数)のスコープ
  
□投稿者/ LOVESONY (4回)-(2012/12/23(Sun) 15:45:25)

分類:[.NET 全般] 

はじめまして。
質問させて下さい。

ASP.NETにて、例えばボタンクリックのイベントにてDictionary型の変数を宣言して、その変数をSession変数に代入します。
このイベントを抜けるとDictionary型の変数はスコープを抜けるため破棄されると思いますが、Session変数に代入されたDictionary型の変数はイベントを抜けた時に破棄されるのでしょうか。
それともSession変数と同じスコープを持つのでしょうか。
よろしくお願い致します。
引用返信 編集キー/
■64721 / inTopicNo.2)  Re[1]: Session変数(内の関数レベル変数)のスコープ
□投稿者/ すみだ (1回)-(2012/12/23(Sun) 18:36:33)
ボタンクリックのイベントで宣言されたローカルのDictionary型の変数は破棄されますが、
あくまでもこのローカル変数の持つDictionary型の実体のアドレス情報が破棄されるというだけです。
でも、この変数と同じアドレス情報がSession変数に格納されているので、この実体を意図的に破棄することがなければ、
Session変数の中身が破棄されない限り、その実体が破棄されることはありません。
Session変数をスコープの概念に無理やり当てはめてしまうとややこしくなると思うのですが、
Session変数は別格と考えればいいんじゃないでしょうか?

#ここは初めてじゃないような気がするが。。。
引用返信 編集キー/
■64722 / inTopicNo.3)  Re[2]: Session変数(内の関数レベル変数)のスコープ
□投稿者/ LOVESONY (5回)-(2012/12/24(Mon) 09:40:43)
すみだ様

ご回答頂きましてありがとうございます。
Dictionary型のローカル変数を、セッション変数に代入した場合に、代入される値は実体ではなく参照アドレスだという事ですね!
で、どこかで見た記憶があるのですが、その「実体を参照する変数がなくならない限り実体は保持される(=その実体を参照する変数が0になった時点で初めて実体がガベージコレクションに破棄される)」から
> Session変数の中身が破棄されない限り、その実体が破棄されることはありません。
という事なのですね!(多分?)
ありがとうございます。
助かりました。

それと今まで2〜3度書き込みした記憶がありますが、毎回同じ方が見ているか分からない(初めて見る方もいらっしゃるかもしれない)ので「はじめまして」と書かせて頂きました。
お気を悪くされましたらすいません。
次回からは少し違う書き方で書き込みさせて頂きます。

最後にこの度はありがとうございました。
この問題ってローカル変数とセッション変数が絡むので、なかなか検索でも探しきれず困っていました。
「セッション変数 代入 参照 値」とかで調べていたのですが検索キーワードが良くなかったのかもしれませんね(^_^;
とても勉強になりました。
本当にありがとうございます!


No64721 (すみだ さん) に返信
> ボタンクリックのイベントで宣言されたローカルのDictionary型の変数は破棄されますが、
> あくまでもこのローカル変数の持つDictionary型の実体のアドレス情報が破棄されるというだけです。
> でも、この変数と同じアドレス情報がSession変数に格納されているので、この実体を意図的に破棄することがなければ、
> Session変数の中身が破棄されない限り、その実体が破棄されることはありません。
> Session変数をスコープの概念に無理やり当てはめてしまうとややこしくなると思うのですが、
> Session変数は別格と考えればいいんじゃないでしょうか?
>
> #ここは初めてじゃないような気がするが。。。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -