- PR -

static変数について

投稿者投稿内容
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-03-02 12:43
C#のつもりでしたが…またやっちまったか軽率発言orz

今調べたんですけど、ひょっとしてこれのことですか?

引用:

静的コンストラクタは、次のどちらかのイベントがアプリケーション ドメインで最初に発生したときに実行されます。
  • クラスのインスタンスが作成されたとき
  • クラスのいずれかの静的メンバが参照されたとき



とすると、間違ってるのは

>アプリケーションの開始から終了まで

こっちですか?それとも

>アプリケーション内で1つ

こっちも間違ってます?すみません、私もまだまだ初心者です…
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-03-02 12:51
いや、私は C# のことはほとんど知らないので分からないです。
(C# のことだとすると)結構 Java と違うなあ・・・と思って、どの言語か聞いてみた。
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2005-03-02 13:57
文法から考えるのではなく、
クラスが実装する変数やメソッドの用途や意味から考えれば
「用途はこうだから、ここはstaticになるな」
と使い分けができると思います。
クラス設計に関して理解を深めるとよいかと思います。
関連して。
私はこの本をオススメします。
先に書いたように「用途はこうだから、このような文法になる」と
理解できる本です。
http://www.amazon.co.jp/exec/obidos/ASIN/475614179X/qid=1109738055/ref=sr_8_xs_ap_i1_xgl/250-5606225-8343438
会議室デビュー日: 2005/03/02
投稿数: 1
投稿日時: 2005-03-02 14:41
用途の一つとしてstaticフィールドでモード指定するというのがあります。
たとえばある自作クラス(MyClassとします)でSetMode(string mode)
というようなメソッドを用意しSetMode("Read")というような使い方を
考えたとします。

この時、SetMode("READ")等スペルミスをしても、stringであることに
変わりはないのでコンパイル時に発見できません。
しかし、MyClass内でstatic const string READ="Read"と宣言することで、
SetMode(MyClass.READ)と指定できます。
これならばスペルミスをした場合に変数名が存在しないことになるので
コンパイル時にエラーとして発見されるので、早期にエラー検出できることになります。

また、Math.PI等、定数値にも使われますね。

staticメソッドとしては、フィールドにデータを格納するのではなく
引数のデータを処理するだけのような場合Math.sin()のように
簡単にその機能を利用できます。

オブジェクト指向では、変数や関数はすべてクラス内に宣言することになるので
staticで、宣言されることによって、いちいちインスタンス化する必要がなく
簡単に利用できるということになります。


[ メッセージ編集済み 編集者: たけぽん 編集日時 2005-03-02 15:20 ]
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-03-02 15:12
引用:
これならばスペルミスをした場合に変数名が存在しないことになるので
コンパイル時にエラーとして発見されるので、早期にエラー検出できることになります。


これは、いずれ Typesafe enum がサポートされて解決するかもね。
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-03-02 15:21
引用:

未記入さんの書き込み (2005-03-02 15:12) より:
これは、いずれ Typesafe enum がサポートされて解決するかもね。


えっ、C# にはないんですか?
Generic もサポートしたんで当然あるんだと思ってたんですけど・・・。
なっちゃん
常連さん
会議室デビュー日: 2005/02/11
投稿数: 21
投稿日時: 2005-03-02 19:34
たくさんのお返事ありがとうございます。 ちょこちょこと記事を拝見してはいたのですがちょっと入りづらい?気がして お返事が遅くなりました。

ちょっと雰囲気と違う気がしますがこのあたりでありがとうございますとお返事させてもらいます。

staticが「変更できない??」というのは 「静的変数」という意味から推察しました。
英語でstaticというと
「静止した, 静的な; 【コンピュータ】スタティックな, 固定された状態の; 変化に乏しい, つまらない; 静体の; 静力学の;」
というような意味なので・・ どうもお騒がせしました。
偶然 参考にしていたサンプルコードもそう誤解するような使い方がしてありまして(−−:
特に、るぱんさん 一郎さん、お返事をいただいてstaticの意味がぴんときました。
ありがとうございます。


なっちゃん
常連さん
会議室デビュー日: 2005/02/11
投稿数: 21
投稿日時: 2005-03-02 20:30
>ほのぼのさん たけぽんさん
やっとstatic stringと constの違いが分かりました。
まだ私が 実用で使うのは難しそうですが staticは便利ですね。
どうも、ありがとうございました。

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