[C#]staticとは?実は超簡単な意味と使い方

C#

C#でよく出てくるstatic(スタティック)って何?

そんな疑問にお答えします。

staticキーワードは、初期のプログラムにも出てきてるくせに少々意味がわかりずらいところがあります。

staticとは

はっきり言うと、「インスタンスではなくクラスそのものに属すよ」という意味です。

詳しく説明します。

staticキーワードをつける対象は、変数メソッドです。
今回は変数を例に挙げて説明します。

普通、インスタンスから変数を取得するときは、クラスという”型”からインスタンスを作成し、そのインスタンスが保持する変数を参照します。

しかし、変数にstaticキーワードをつけると、その変数はクラスそのものが保持することになるため、取得する際はクラスから直接参照することができます。

例として、以下のようなUserクラスがあったとします。

public class User
{
    public string name;
    public static int age;
}

変数nameは通常の変数ですので、以下のように取得します。

User user = new User(); //インスタンスを作成
string name = user.name; //変数nameを取得

変数ageはUserクラスに属している変数なので、クラス名.変数名で直接取得することができます。

int age = User.age; //クラスから直接取得

では、取得ではなく代入・変更はどうなるのでしょうか。

基本的には取得の際と同じです。

通常の変数の場合はインスタンスに属しているため、そのインスタンスの保持する値を変更することになります。

それに対してstaticがついた変数はクラスに属しているため、クラスそのものが保持する値を変更することになります。

これはどういうことかというと、staticキーワードがついた変数はどこから参照しても同じ値を示す、グローバルな変数になるということです。

アプリ内で一つしか存在しないということですね!

  メソッドの場合

メソッドの場合も同じく、インスタンスを作らず呼び出すことができます。

Console.WriteLine() がその例として挙げられます。

もしこれにstaticキーワードがついていなかったらこうなります。

Console console = new Console();
console.WriteLine("アイウエオ");

めんどくさい!

このようにメソッドも変数と同じように、クラスそのものに属すことになります。

staticを使うメリット

つまり、以下のメリットがあります。

  • いちいちインスタンスを作らなくても使える
  • どこから参照しても同じ値を示す

コメント