2022年01月23日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説! total 757 count

staticキーワード: 静的なメンバーは作らなくても1つある。2つ以上は作れない

Written By: 川俣 晶連絡先

この章のテーマ §

 静的なメンバーを作るstaticキーワードについて学びます。

前提知識 §

Console.WriteLineメソッド, 変数の基礎, int型. クラスの基礎、プロパティ、メソッド、コンストラクタ

解説 §

 型のメンバーの宣言時にstaticキーワードを付けるとメンバーは【静的】になります。静的なメンバーには以下の特徴があります。

  • newしなくても必ず使える
  • 一つの型につき1つだけ必ず存在する
  • 使う時は"型名.メンバー名"として使い、ドットの手前にはインスタンスを書かない

 情報の交通整理をするなど、プログラム中で【必ず1つ】【2つあってはならない】という情報を記述するのに便利です。

罠の数々 §

  • クラスにstaticを付けると、【全てのメンバーは静的でなければならない】という制約が付く
  • メソッド内のメソッドに付けると、外部の変数をキャプチャしないという制約が付く。機能が異なることに注意
  • 静的なコンストラクタにアクセス修飾子は付かない。必ずシステムが自動で呼び出すので、区別する意味がない。付けることもできない
  • 静的なコンストラクタは最初にそのクラスの静的メンバーが使われるときに自動的に呼び出される。明示的に呼び出す方法はない。使われなければ存在しても呼び出されない

参考リンク §

static (C# リファレンス)

サンプルソース: kw_static §

Console.WriteLine(MyStaticSample.MyPropertyStatic);

MyStaticSample.SetPropertyToStatic(2);

Console.WriteLine(MyStaticSample.MyPropertyStatic);

public class MyStaticSample

{

    // 静的なプロパティ

    public static int MyPropertyStatic { get; set; }

    // 静的なメソッド

    public static void SetPropertyToStatic(int x)

    {

        MyPropertyStatic = x;

    }

    // 静的なコンストラクタ

    static MyStaticSample()

    {

        MyPropertyStatic = 1;

    }

}

実行結果 §

1

2

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 以下のプログラムの実行結果を予測してみよう。

MySample<int>.Count++;

MySample<string>.Count++;

Console.WriteLine(MySample<byte>.Count);

class MySample<T>

{

    public static int Count = 1;

}

  1. 1
  2. 2
  3. 3
  4. 4
  5. エラー

[[解答]]

単行本情報