C_Sharp-クラス

C#のクラスについて

C#におけるクラスとは

クラス(class)はデータとデータを処理するメソッドを組み合わせた型の一種です。

C#のクラスは、C++よりもJavaにおけるクラス概念に近いといえます。


クラスの定義

クラスは「class」キーワードを用いて定義します。

最も単純なクラスの定義は以下の形式になります。


class クラス名
{
    // 本体
}

インスタンスの生成

クラスからインスタンスを生成するにはnew演算子を用います。

C#ではJavaのように、クラスに引数を渡さない場合にも、空の括弧を指定する必要があります。


クラス型 変数 = new クラス名();

インスタンスはクラス型の変数に格納して、オブジェクトとして扱います。


class MsgInfo
{
    public string msg = "class field valuable.";

    // 文字列を出力する
    public void echo_msg()
    {
        System.Console.WriteLine("echo_msg:{0}", this.msg);
    }
}

class Program
{
    static int Main() 
    {
        // インスタンスの生成
        MsgInfo obj = new MsgInfo();

        // クラス変数にアクセスする
        System.Console.WriteLine(obj.msg);

        // クラスメソッドにアクセスする
        obj.echo_msg();

        return(0);
    }
}

アクセシビリティ(accessibility) について

アクセス修飾子

C#ではクラス内メンバにアクセス可能な範囲を制御するためのアクセス修飾子が5つ用意されています。

public アクセスは制限されない。(どこからでもアクセス可能。)
protected その型、及び、派生クラス(親メンバクラスを継承した型の内部)からのみアクセス可能 (family scope)
internal 要素が含まれるプログラム(アセンブリ)内からのみアクセス可能 (assembly scope)。
protected internal protected かつ internal。 要素が含まれるプログラム、及び親メンバクラスを継承した型からのみアクセス可能。
private その型の中からのみアクセス可能。

アクセス修飾子を指定しない場合

C#では、アクセス修飾子を指定していない場合、クラス内の定義は「private」になります。


class MsgInfo
{
    // アクセス修飾子を指定しなければprivateになる
    string msg = "class field valuable.";
}

class Program
{
    static int Main() 
    {
        MsgInfo obj = new MsgInfo();

        // エラーになる
        System.Console.WriteLine(obj.msg);

        return(0);
    }
}

関連ページ