- - PR -
static変数について
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-01 16:11
様々な参考書を読んでみたのですが よく分からないので教えてください。
static とはどんなものなんでしょうか。 static string とconstはどのように違うのですか? ヘルプにはstatic なメンバーは読み取り専用のものと似たような働きをする とありますが、それはconst(定数?と思ってよい??)もそうではないでしょうか。 staticをどのような時に使用するのか いまいちつかめません。 よろしくお願いいたします。 | ||||
|
投稿日時: 2005-03-01 16:29
こんにちは、じゃんぬねっと です。
Static 変数 (静的変数) を、Const などと比べるのが、 そもそも、間違ってるような気がします。 インスタンス変数と比べないと。 Static なメソッドから、インスタンス メンバにアクセスできないのは何故か? インスタンス メソッドから、Static メンバ にアクセスすると、すべて同一なのは何故か? その辺りを実際に組んで理解してください。 クラスは組んだことがあるでしょう? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-03-01 16:30
プログラミング言語は? 言語が異なればキーワードの効果も異なります。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2005-03-01 16:52
という所から、staticではなくてreadonlyのことを言っているんじゃないですかね。 constは定数で、コンパイル時にその定数を参照している部分は値に置き換えられます。 readonlyはそのメンバを持つインスタンスが出来上がってしまった段階で変更ができなくなる変数です。 ですから、コンストラクタ内では値を設定することができます。 constはコンパイル時に定数の値に置き換えられるので、例えばA.exeとB.dllがあって、B.dll内の定数をA.exeで参照している状態でB.dllの定数の値を変更してもA.exeの動作には影響がありません。 -------------- ちなみに、constキーワードを付けたメンバは自動的にstatic(つまりクラスのメンバ)になってしまいます。 [ メッセージ編集済み 編集者: 一郎 編集日時 2005-03-01 16:57 ] | ||||
|
投稿日時: 2005-03-01 18:47
お返事ありがとうございます。
C#をつかっています。 すみません、さらに分からなくなりました。 static変数(静的変数) ・・変更不可 インスタンス変数 ・・読み取り・書き込みできる という風につかんでいるのですが おかしいでしょうか? | ||||
|
投稿日時: 2005-03-01 18:56
取りあえず
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrfModifiersKeywords.asp この辺を熟読すべきだと思います。 サンプルコードも載っている事だし。 読めば分かりますが、staticの説明のどこにも変更不可だとか読み取りしかできないだとかは書かれていません。 | ||||
|
投稿日時: 2005-03-01 19:02
間違いです。 C# の static にそんな効用はないです。 const か readonly が伴わない限り、static 変数/インスタンス変数伴に読み書き可能です。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2005-03-01 21:01
ども、ぼのぼの@C#は初心者です。
VB.NETだとstaticに該当するキーワードはShared(=共用の)です。 意味を知るだけならこっちの方がイメージが沸き易いんではないでしょうか? ちなみにstatic(=静的な)の語源はC言語まで遡って、そこではメモリ上のアドレスが固定になるって意味だったんですけど、C#だと内部的にはどうなんでしょ?ちょっとわかりません… ちなみにconst(ant=固定の)とreadnly(=読み取り専用の)はVB.NETでも同じ。こちらは、読んだままの意味です。 |
1|2|3|4
次のページへ»