- PR -

staticな変数のデータの保持期限

1
投稿者投稿内容
さり
常連さん
会議室デビュー日: 2003/05/13
投稿数: 38
投稿日時: 2003-09-19 12:08
ASP.NETなのですが、static な変数に入れたデータはいつまで保持されるのでしょうか?
アプリケーションが終了されるまでと考えると、aspnet_wp.exeが上がっている時には
ずっと保持されると理解してよいのでしょうか?
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-19 23:34
その通りだと思いますが、そのクラスにアクセスする複数のクライアントは
皆同じstatic変数を参照するのでいいんですよね。
Session、Applicationオブジェクトなどもあるので、用途に合わせて使ってください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 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#にチャレンジしてみた(笑)
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-22 00:51
引用:
Jittaさんの書き込み (2003-09-20 06:43) より:
 staticをどこに書くかで変わると思います。

あ、そうですね。あまり関数内で使わないから忘れてました。

VB.Netについてはここに詳しく書いてました。
モジュールレベルだとアプリケーション実行時間中有効で、
関数レベルでもSharedしてると同じく有効みたいです。
さり
常連さん
会議室デビュー日: 2003/05/13
投稿数: 38
投稿日時: 2003-09-22 10:12
ぴでさん、Jittaさん、御回答ありがとうございます。


>その通りだと思いますが、
それを聞いて安心しました。

>そのクラスにアクセスする複数のクライアントは 皆同じstatic変数を参照するのでいいんですよね。
そのとおりです。

>Session、Applicationオブジェクトなどもあるので、用途に合わせて使ってください。
最初はアプリケーションキャッシュを使用することを考えていたのですが、データを
構造体もしくはDataSetで持つのですが、キャッシュから使用するたびに使用したい型に
キャストする事を考えて、staticでデータを持つ事にしました。

staticで保持するデータは、社員マスタのようなほとんど変わらないマスタデータで、
毎朝保持しているデータを更新します。

>staticをどこに書くかで変わると思います。
データはずっと保持しておきたいので、「アプリケーションというオブジェクトが破棄されるまで。 」
の部分に宣言します。

> VB.NETのModuleはわかりません。
> ので、いつもはVB.NETなのにC#にチャレンジしてみた(笑)
JittaさんがC#に鞍替えしてくれるとすごく嬉しいです
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-22 22:33
引用:

さりさんの書き込み (2003-09-22 10:12) より:

> VB.NETのModuleはわかりません。
> ので、いつもはVB.NETなのにC#にチャレンジしてみた(笑)
JittaさんがC#に鞍替えしてくれるとすごく嬉しいです


 プレッシャと受け取っておきます^^;
 プライベートなのは、C#で作っているんですよ、実は。でも、考える基本はC++かも。
Izumi, Y.
ベテラン
会議室デビュー日: 2002/03/19
投稿数: 77
お住まい・勤務地: 東京
投稿日時: 2003-09-23 04:39
確か C# はメソッドの内部では static 変数が宣言できなかったような…
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-23 07:06
引用:

IZUMI Yusukeさんの書き込み (2003-09-23 04:39) より:

確か C# はメソッドの内部では static 変数が宣言できなかったような…


 おお!『特定のオブジェクトではなく、型自体に所属するメンバを宣言します。』と、書いてありますね。(「Visual C#言語→C# プログラマーズ リファレンス→C#のキーワード→修飾子)

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-09-23 07:06 ]
1

スキルアップ/キャリアアップ(JOB@IT)