C# staticメソッド

C#サンプル プログラムプログラミング
スポンサーリンク

メソッドの宣言にstaticをつけると、static(静的)メソッドとなります。

static(静的)メソッドは、クラスをインスタンス化する必要がありません。

但し、通常のプロパティにはアクセスできません。

メソッドの実体がクラス側にあるイメージです。

static(静的)メソッドは手軽に呼び出せることもあり、共通で使えるような部品を作成することが多いのかと思います。

通常のメソッド

public void run;

staticをつけなければ、staticメソッドにならない。

・クラスをインスタンス化(new)する必要がある。

・通常のプロパティ、staticプロパティの両方にアクセスできる。

staticメソッド

をつけると静的なになります。

public static void run;

staticをつけるとstaticメソッドになる。

・クラスをインスタンス化する必要がない。

・通常のプロパティにはアクセスできない、staticプロパティにはアクセスできる。

 

サンプル

自動車クラス内の実行処理1(通常のメソッド)と実行処理2(staticメソッド)の呼び出し方のサンプルです。

スポンサーリンク

プログラミング

言語:C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace サンプル
{
    public partial class Form6 : Form
    {
        public Form6()
        {
            InitializeComponent();
        }

        private void Form6_Load(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// 自動車クラス
        /// </summary>
        class Car
        {
            // 自動車名
            public string carName { get; set; } = "";

            // 実行フラグ
            public static bool runFlg { get; set; } = false;

            /// <summary>
            /// コンストラクタ
            /// </summary>
            /// <param name="name"></param>
            public Car(string name)
            {
                // 自動車名をプロパティにセットする
                carName = name;

            }

            /// <summary>
            /// 実行処理1(通常のメソッド)
            /// </summary>
            public void run_1()
            {
                // 通常のメソッドは通常のプロパティとstaticプロパティにアクセスできます。
                carName = "A"; // 通常のプロパティ
                runFlg = true; // staticプロパティ
            }

            /// <summary>
            /// 実行処理2(staticメソッド)
            /// </summary>
            public static void run_2()
            {
                // staticメソッドは通常のプロパティにアクセスできません。
                //carName = "A";  // 通常のプロパティ
                runFlg = true;   // staticプロパティ
            }
        }

        /// <summary>
        /// ボタン1クリック処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            // 通常のメソッドはクラスをNEWしないと呼び出せません。
            Car car1 = new Car("犬");
            car1.run_1();

            // staticメソッドはクラスをNEWしなくても呼び出せます。
            Car.run_2();
        }
    }
}

スポンサーリンク
タイトルとURLをコピーしました