読者です 読者をやめる 読者になる 読者になる

static とは ( クラス変数・クラスメソッド )

static がついているのは、クラス ( 型 ) 自身が持っているもの

static なフィールドやメソッドを呼び出す時は以下のように呼び出す。
クラス名.フィールド名( またはメソッド名 )

 

static で修飾されたフィールド ( クラス変数 ):

static フィールド、クラス変数  ⇔  インスタンスフィールド、インスタンス変数

staticフィールドはインスタンスを作成しなくとも存在する。
クラスという苗字をもつグローバルな変数と考える。
(グローバル変数:あらゆるところからアクセス可)
インスタンス共通の情報を保持する場所

フィールド:クラス単位でもつ変数
インスタンスフィールド:インスタンスに属するフィールド

 

ex) 人について

クラス:人
インスタンス:個人
名前や年齢は個人ごとに異なるが、人の学名( Homo sapiens )は共通。
人を表す Person というクラスを作成した場合、
name や age といったメンバ変数はインスタンスフィールドに、
scientificName (学名) といったメンバ変数はクラスフィールドにする。
(※ 普遍な値は定数 const として定義すべきだが、説明の為)

class Person
{
        public string name;
        public int age;
       
        public static string scientificName;
}

値参照する時。

Person p = new Person();
p.name = "";
p.age = ;

Person.scientificName = "HomoSapiens";

 

static で修飾されたメソッド

static メソッド、クラスメソッド  ⇔  インスタンスメソッド

クラスに属するメソッド故に、呼び出す際にインスタンスを必要としない
インスタンスと関係ない為、自クラスのインスタンスに格納されている
普通のフィールド ( 非sitaticフィールド ) にはアクセスできず、
普通のメソッド ( 非staticメソッド ) を呼び出すこともできない。
static からアクセスできるのはstatic だけ

以下のようなメソッドはクラスメソッドとして宣言する。
クラスのインスタンスの中から特定のインスタンスを見つけるメソッド。
クラス変数に対して、計算や処理を行うメソッド。
インスタンスを持つ必要のないメソッド。

 

ex) 数学関数

Math.Asin(7);
Console.WriteLine("hoga");

//Math クラスのクラスメソッド Asin を参照
//Console クラスのクラスメソッド WriteLine を参照

 

static:

「静的」なメソッドやフィールドを作るための予約語

静的:実行時に変化しないこと。
動的が実行中の条件によって動作や結果が変わるのに対し、
静的は状況によらず固定された動作や結果となる。
static は、「メモリから解放されずに、常に待機」という指示。

 

こちら参照と引用
http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000162.html
http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000163.html
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1241029232
http://ufcpp.net/study/csharp/oo_static.html

 

以上。

--Memo--
メンバ変数 ( フィールド ):クラスが持つ変数

ローカル変数:メソッドが持つ変数