- - PR -
staticな変数のデータの保持期限
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-09-19 12:08
ASP.NETなのですが、static な変数に入れたデータはいつまで保持されるのでしょうか?
アプリケーションが終了されるまでと考えると、aspnet_wp.exeが上がっている時には ずっと保持されると理解してよいのでしょうか? | ||||
|
投稿日時: 2003-09-19 23:34
その通りだと思いますが、そのクラスにアクセスする複数のクライアントは
皆同じstatic変数を参照するのでいいんですよね。 Session、Applicationオブジェクトなどもあるので、用途に合わせて使ってください。 | ||||
|
投稿日時: 2003-09-20 06:43
staticをどこに書くかで変わると思います。
class Always { static int Eternal; } だと、アプリケーションというオブジェクトが破棄されるまで。 class NotAlways { void Procedure() { static int Eternal; } } だと、NotAlwaysクラスのインスタンスが生成されてから、破棄されるまで。 VB.NETのModuleはわかりません。 #ので、いつもはVB.NETなのにC#にチャレンジしてみた(笑) | ||||
|
投稿日時: 2003-09-22 00:51
VB.Netについてはここに詳しく書いてました。 モジュールレベルだとアプリケーション実行時間中有効で、 関数レベルでもSharedしてると同じく有効みたいです。 | ||||
|
投稿日時: 2003-09-22 10:12
ぴでさん、Jittaさん、御回答ありがとうございます。
>その通りだと思いますが、 それを聞いて安心しました。 >そのクラスにアクセスする複数のクライアントは 皆同じstatic変数を参照するのでいいんですよね。 そのとおりです。 >Session、Applicationオブジェクトなどもあるので、用途に合わせて使ってください。 最初はアプリケーションキャッシュを使用することを考えていたのですが、データを 構造体もしくはDataSetで持つのですが、キャッシュから使用するたびに使用したい型に キャストする事を考えて、staticでデータを持つ事にしました。 staticで保持するデータは、社員マスタのようなほとんど変わらないマスタデータで、 毎朝保持しているデータを更新します。 >staticをどこに書くかで変わると思います。 データはずっと保持しておきたいので、「アプリケーションというオブジェクトが破棄されるまで。 」 の部分に宣言します。 > VB.NETのModuleはわかりません。 > ので、いつもはVB.NETなのにC#にチャレンジしてみた(笑) JittaさんがC#に鞍替えしてくれるとすごく嬉しいです | ||||
|
投稿日時: 2003-09-22 22:33
プレッシャと受け取っておきます^^; プライベートなのは、C#で作っているんですよ、実は。でも、考える基本はC++かも。 | ||||
|
投稿日時: 2003-09-23 04:39
確か C# はメソッドの内部では static 変数が宣言できなかったような…
| ||||
|
投稿日時: 2003-09-23 07:06
おお!『特定のオブジェクトではなく、型自体に所属するメンバを宣言します。』と、書いてありますね。(「Visual C#言語→C# プログラマーズ リファレンス→C#のキーワード→修飾子) [ メッセージ編集済み 編集者: Jitta 編集日時 2003-09-23 07:06 ] |
1