2016年5月25日水曜日

[C#] static

こんにちは。明月です。
今日は「static」について勉強します。「static」は俗に静的キーワードと言います。「static」の種類は「staticメソッド」、「static変数」、「staticクラス」があります。


staticメソッド


今まで勉強したとおりならメソッドを使うためにはクラスを割り当てなければならないです。なぜなら、OOPの最小単位はクラスだし、メソッドはクラスの内部に存在しているからです。
でもクラスとは関係なく、計算だけするメソッドが必要な時もあります。例えば、パラメタで「int」タイプデータを2つを受け取って、パラメタの数を足す計算だけするメソッドがあると思いましょう。そしてそのメソッドを使うためにクラスを割り当てる(new)ことはメモリが惜しい感じがしますね。
その時に「static」メソッドに実装すればクラスを割り当てずにメソッドを使うことができます。





上の例を見ると「new」(割り当て)をしなくてメソッドを使います。そうすれば、staticメソッドからクラス内部のメンバ変数を使えるかと疑問になりますね。



上をみるとエラーが発生しますね。なぜなら「static」メソッドの場合はクラスを割り当てて使うものではなく静的領域なので、動的なクラスの部分に直接に参照ができないです。
でも、メソッドの中でクラスを割り当てたら使えます。




static変数


static変数は消されない変数だといいます。すなわち、クラスの変数はクラスが割り当てる時に変数の値が生成してクラスが解除する時に変数の値が無くなります。
でも、プロジェクトの中で唯一に宣言するし、解除が行わない変数も必要だと思いますね。その時に使う変数を「static」変数と言います。




staticクラス


「staticクラス」はクラスの構成メンバがすべて構成が「static」になります。そしてstaticクラスの場合はコンストラクタをもってられません。
なぜなら、「staticクラス」は割り当て(new)られないので、コンストラクタが存在できません。



0 件のコメント