English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# クラス(Class)

クラスは特定のオブジェクトの青写真のようなものです。現実世界では、各オブジェクトには色、形状、機能がある-例えば、豪華なスポーツカーのフェラーリ。フェラーリは豪華な車のオブジェクトです。豪華な車は特定の特性を示すクラスであり、例えば速度、色、形状、インテリアなどがあります。したがって、これらの要件を満たす車を製造するあらゆる会社は豪華な車のオブジェクトです。例えば、BMW、ランボルギーニ、キャデラックの各車は「豪華な車」のクラスのオブジェクトです。ここで、「豪華な車」は一つのクラスであり、各実物の車は豪華な車のクラスのオブジェクトです。

同様に、オブジェクト指向のプログラミングでは、クラスは属性、フィールド、イベント、メソッドなど定義了一些機能。クラスはデータの種類とそのオブジェクトが持つ機能を定義します。

クラスは他のタイプ、メソッド、イベントの変数をグループ化してカスタムタイプを作成するために使用されます。

C#では、classキーワードを使用してクラスを定義できます。

public class MyClass
{
    public string  myField = string.Empty;
    public MyClass()
    {
    }
    public void MyMethod(int parameter1, string parameter2)
    {
        Console.WriteLine("First Parameter {0}, second parameter {1}1, パラメータ2);
    }
    public int MyAutoImplementedProperty { get; set; }
    private int myPropertyVar;
    
    public int MyProperty
    {
        get { return myPropertyVar; }
        set { myPropertyVar = value; }
    } 
}

以下の図はC#クラスの重要な構成要素を示しています。

C# クラス

C# アクセス修飾子

アクセス修飾子はクラス、メソッド、属性、フィールド、その他のメンバーの宣言に適用されます。これらはクラス及其メンバーのアクセス性を定義します。パブリック、プライベート、プロテクテッド、内部がC#のアクセス修飾子です。これらについて詳しく説明します。

C# フィールド

このフィールドは値を持つクラスレベルの変数です。通常、フィールドメンバーはプライベートなアクセス修飾子を持ち、属性と一緒に使用されます。

C# コンストラクタ

クラスはパラメータ付きまたはパラメータなしのコンストラクタを持つことができます。クラスのインスタンスを作成する際には、コンストラクタが呼び出されます。アクセス修飾子とクラス名を使用してコンストラクタを定義できます:

<アクセス修飾子> <class 名前>(){  }
class MyClass
{
    public MyClass()
    {
    }
}

C# メソッド

以下のテンプレートを使用してメソッドを定義できます:

{アクセス修飾子} {return type} MethodName({parameterType parameterName})}
public void MyMethod(int parameter1, string parameter2)
{
    // ここにあなたのメソッドのコードを書きます。 
}

属性

属性を定義するには、以下のようにgetterとsetterを使用します:

private int _myPropertyVar;
public int MyProperty
{
    get { return _myPropertyVar; }
    set { _myPropertyVar = value; }
}

プロパティはプライベートフィールドをエンケapsulatingします。getters(get {})を使用して基本フィールドの値を取得し、setters(set {})を使用して基本フィールドの値を設定します。上記の例では、_myPropertyVarはプライベートフィールドであり、直接アクセスできません。MyPropertyを通じてのみアクセスできます。したがって、MyPropertyは_myPropertyVarをエンケapsulatingします。

getおよびsetに他のロジックを適用することもできます。以下の例を参照してください。

private int _myPropertyVar;
public int MyProperty
{
    get {
        return _myPropertyVar / 2;
    }
    set {
        if (value > 100)
            _myPropertyVar = 100;
        else
            _myPropertyVar = value; ;
    }
}

自動実装プロパティ

C#から30.0から、getやsetにロジックを適用しない場合、簡単にプロパティの宣言を行うことができます。

以下は自動実装プロパティの例です:

public int MyAutoImplementedProperty { get; set; }

上記の属性例には、プライベートバックフィールドが含まれていません。サポートされるフィールドはコンパイラが自動的に作成します。自動プロパティは、クラスの通常のプロパティのように使用できます。属性アクセッサに他のロジックが必要ない場合、自動実装のプロパティはプロパティの簡単な宣言のために使用されます。

名前空間

名前空間は、関連するクラスや名前空間を含むコンテナです。名前空間は、名前空間内のクラスにユニークな名前を提供するために使用されます。名前空間とクラスは点(.)を使用して表されます。

C#では、namespace キーワードを使用して名前空間を定義できます。

namespace CSharpTutorials
{
    class MyClass
    {
    }
}

上記の例では、MyClassの完全修飾クラス名はCSharpTutorials.MyClassです。

名前空間は他の名前空間を含むことができます。内部名前空間は点(.)で区切ります。

namespace CSharpTutorials.Examples
{
    class MyClassExample
    {
    }
}

上記の例では、MyClassExampleの完全修飾クラス名はCSharpTutorials.Examples.MyClassExampleです。