クラスを作成する - C#

C#でのクラスのコードを紹介します。

概要

C#でクラスを作成するにはclassキーワードを利用します。

書式

class (クラス名)
{
 ...クラスの実装を記述...
}
クラスを記述するには上記の書式を利用します。

プログラム例

Windowsフォームアプリケーションを作成します。

クラスのコードファイルを追加する手順

Visual Studioを起動しソリューションを開きます。ソリューションエクスプローラでクラスを追加したいプロジェクトのノードをクリックして選択します。


右クリックしポップアップメニューを表示します。メニューの[追加]の[新しい項目]をクリックします。


[新しい項目の追加]ダイアログが表示されます。左側のノードで[Visual C# アイテム]のノードを選択します。右側に追加する項目の種類の一覧が表示されますので[クラス]の項目をクリックして選択します。ダイアログの下部の[名前]テキストボックスにクラスのコードのファイル名を入力します。C#では通常クラスの名称とファイル名を一致させるスタイルになっています。MyClassというクラスを作成する場合、C#のソースコードファイル名はMyClass.csとします。今回はMyClass.csファイルの名称で追加します。
設定ができたら、ダイアログ右下の[追加]ボタンをクリックします。


ソリューションエクスプローラのプロジェクトノード内にクラスのコードファイルが追加されます。追加されたコードの編集画面も表示されます。


クラスのひな型で下記のコードが自動で生成されます。
MyClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SimpleClass
{
  class MyClass
  {
  }
}

UI

下図のUIを作成します。ボタンとテキストボックス(Multilineプロパティをtrueに設定したもの)を配置します。

コード

下記のコードを記述します。
MyClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SimpleClass
{
  class MyClass
  {
    private int x;
    private int y;
    private int z;
    private int total;

    public void SetValue(int px, int py, int pz)
    {
      x = px;
      y = py;
      z = pz;
      total = x + y + z;
    }

    public int GetX()
    {
      return x;
    }

    public int GetY()
    {
      return y;
    }

    public int GetZ()
    {
      return z;
    }

    public int GetTotal()
    {
      return total;
    }

  }
}
FormMain.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SimpleClass
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      MyClass myc1;
      MyClass myc2;
      MyClass myc3;
      myc1 = new MyClass();
      myc2 = new MyClass();
      myc3 = new MyClass();

      myc1.SetValue(8, 6, 3);
      myc2.SetValue(2,3,1);
      myc3.SetValue(7,4,9);

      textBox1.Text = string.Format("({0:d}, {1:d}, {2:d}){3:d}\r\n", myc1.GetX(), myc1.GetY(), myc1.GetZ(), myc1.GetTotal());
      textBox1.Text += string.Format("({0:d}, {1:d}, {2:d}){3:d}\r\n", myc2.GetX(), myc2.GetY(), myc2.GetZ(), myc2.GetTotal());
      textBox1.Text += string.Format("({0:d}, {1:d}, {2:d}){3:d}\r\n", myc3.GetX(), myc3.GetY(), myc3.GetZ(), myc3.GetTotal());
    }
  }
}

解説

クラス (MyClass)

今回の例では、クラスにはx, y, zの座標値を格納するメンバ変数と、3つの座標値の合計を格納するtotalメンバ変数を用意します。totalの値はx,y,zのメンバ変数に変更が起きた際に計算をするため、x,y,zのメンバ変数への直接代入はできない仕様とします。座標値の変更はSetValue()メソッドを利用する仕様とします。また、x,y,z,totalの値を参照する方法はGetX, GetY, GetZ, GetTotal のメソッドの戻り値で取得する仕様とします。
補足
プロパティを用いたほうがシンプルな実装になりますが、今回の例ではプロパティは利用しません。プロパティの実装についてはこちらの記事を参照してください。

フォーム (FormMain)

フォーム側ではボタンがクリックされると、MyClassのオブジェクト myc1, myc2, myc3 を宣言します。C#のクラスは宣言後にインスタンスの生成が必要なため、new を利用してインスタンスオブジェクトを作成します。
MyClassのオブジェクト作成後、作成されたオブジェクトのSetValue()メソッドを呼び出し、座標値を設定します。座標値の設定後、テキストボックスに設定されたx, y, zの値とクラス内で計算された3つの値の和であるtotalをテキストボックスに表示します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[Button1]をクリックします。下図の結果が表示されます。クラスに設定した座標値と3つの値の和が表示されます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2018-03-19
iPentec all rights reserverd.