工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C# コンストラクター

C# コンストラクター

このチュートリアルでは、例を使用して C# コンストラクターとその型について学習します。

C# では、コンストラクターは、クラスのオブジェクトが作成されるときに呼び出されるメソッドに似ています。

ただし、メソッドとは異なり、コンストラクター:


C# コンストラクターを作成する

C# でコンストラクターを作成する方法は次のとおりです

class Car {
  
  // constructor
  Car() {
    //code
  }

}

ここで、Car() コンストラクタです。クラスと同じ名前です。

コンストラクタを呼び出す

コンストラクターを作成したら、 new を使用して呼び出すことができます キーワード。たとえば、

new Car();

C# では、クラスのオブジェクトを作成しようとすると、コンストラクターが呼び出されます。たとえば、

Car car1 = new Car();

ここでは、Car() を呼び出しています。 オブジェクト car1 を作成するコンストラクタ .オブジェクトの詳細については、C# クラスとオブジェクトをご覧ください。


コンストラクタのタイプ

次のタイプのコンストラクターがあります:


1.パラメーターなしのコンストラクター

パラメーターなしでコンストラクターを作成すると、それはパラメーターなしのコンストラクターと呼ばれます。たとえば、

using System;

namespace Constructor {

  class Car {   

    // parameterless constructor
    Car() {
      Console.WriteLine("Car Constructor");
    }
 
    static void Main(string[] args) {

      // call constructor
      new Car();
      Console.ReadLine();
     
    }
  }
}

出力

Car Constructor

上記の例では、Car() という名前のコンストラクターを作成しました。 .

new Car();

new を追加してコンストラクタを呼び出すことができます コンストラクター名にキーワードを追加します。


2. C# パラメータ化コンストラクタ

C# では、コンストラクターもパラメーターを受け入れることができます。これは、パラメーター化されたコンストラクターと呼ばれます。たとえば、

using System;

namespace Constructor {

  class Car {   

    string brand;
    int price;

    // parameterized constructor
    Car(string theBrand, int thePrice) {

      brand = theBrand;
      price = thePrice;
    }
  
    static void Main(string[] args) {

      // call parameterized constructor
      Car car1 = new Car("Bugatti", 50000);

      Console.WriteLine("Brand: " + car1.brand);
      Console.WriteLine("Price: " + car1.price);
      Console.ReadLine();
     
    }
  }
}

出力

Brand: Bugatti
Price: 50000

上記の例では、Car() という名前のコンストラクターを作成しました。 .コンストラクターは 2 つのパラメーターを取ります:theBrand そして価格 .

声明に注目してください、

Car car1 = new Car("Bugatti", 50000);

ここでは、2 つの値をコンストラクターに渡しています。

コンストラクターに渡される値は、引数と呼ばれます。パラメータと同じ数と型の値を渡す必要があります。


3.デフォルトコンストラクタ

クラスでコンストラクターを定義していない場合、C# は、空のコードとパラメーターのない既定のコンストラクターを自動的に作成します。たとえば、

using System;

namespace Constructor {

  class Program {  

    int a;

    static void Main(string[] args) {

      // call default constructor
      Program p1 = new Program();

      Console.WriteLine("Default value of a: " + p1.a);
      Console.ReadLine();
     
    }
  }
}

出力

Default value of a: 0

上記の例では、Program にコンストラクターを作成していません。 クラス。ただし、オブジェクトの作成中にコンストラクターを呼び出しています。

Program p1 = new Program();

ここで、C# は既定のコンストラクターを自動的に作成します。デフォルト コンストラクターは、初期化されていない変数をデフォルト値で初期化します。

したがって、0 を取得します int の値として 変数 a .

注意 :デフォルトのコンストラクターでは、すべての数値フィールドが 0 に初期化されますが、文字列とオブジェクトは null として初期化されます。


4. C# でコンストラクターをコピー

コピー コンストラクターを使用して、別のオブジェクトからデータをコピーしてオブジェクトを作成します。たとえば、

using System;

namespace Constructor {

  class Car {  
    string brand;

    // constructor
    Car (string theBrand) {
      brand = theBrand;
    }

    // copy constructor
    Car(Car c1) {
      brand = c1.brand;
    }

    static void Main(string[] args) {
      // call constructor
      Car car1 = new Car("Bugatti");

      Console.WriteLine("Brand of car1: " + car1.brand);

      // call the copy constructor
      Car car2 = new Car(car1);
      Console.WriteLine("Brand of car2: " + car2.brand);

      Console.ReadLine();
     
    }
  }
}

出力

Brand of car1: Bugatti
Brand of car2: Bugatti

上記のプログラムでは、コピー コンストラクターを使用しています。

Car(Car c1) {
  brand = c1.brand;
}

ここで、このコンストラクターは Car のオブジェクトを受け入れます そのパラメーターとして。したがって、car2 を作成するときに オブジェクト、car1 を渡しました オブジェクトをコピー コンストラクターへの引数として渡します。

Car car2 = new Car(car1);

コピー コンストラクター内で、brand の値を割り当てました。 car1ブランドに対する反対 car2 の変数 物体。したがって、両方のオブジェクトのブランドの値は同じです .


5.プライベート コンストラクター

private を使用してプライベート コンストラクターを作成できます。 アクセス指定子。これは、C# ではプライベート コンストラクターとして知られています。

コンストラクターがプライベートであると宣言されると、そのクラスのオブジェクトを他のクラスで作成することはできません。

例 1:プライベート コンストラクター

using System;

namespace Constructor {

  class Car {  
  
   // private constructor
   private Car () {
    Console.WriteLine("Private Constructor");    
    }
  }
    
    class CarDrive {

      static void Main(string[] args) {

      // call private constructor
      Car car1 = new Car();
      Console.ReadLine();
    }
  }
}

上記の例では、プライベート コンストラクター Car() を作成しました。 . private メンバはクラス外ではアクセスできないので、 Car のオブジェクトを作ろうとすると

// inside CarDrive class
Car car1 = new Car();

エラーが発生します

error CS0122: 'Car.Car()' is inaccessible due to its protection level

注意 :コンストラクターがプライベートの場合、クラスのオブジェクトを作成できません。したがって、クラスのすべてのフィールドとメソッドは、クラス名を使用してアクセスできるように、静的に宣言する必要があります。


6. C# 静的コンストラクター

C# では、コンストラクターを静的にすることもできます。 static を使用します キーワードを使用して静的コンストラクターを作成します。たとえば、

using System;

namespace Constructor {

  class Car {  
  
   // static constructor
   static Car () {
    Console.WriteLine("Static Constructor");    
   }

    // parameterless constructor
    Car() {
     Console.WriteLine("Default Constructor");
   } 

    static void Main(string[] args) {

      // call parameterless constructor
      Car car1 = new Car();

      // call parameterless constructor again
      Car car2 = new Car();

      Console.ReadLine();
    }
  }
}

上記の例では、静的コンストラクターを作成しました。

static Car () {
  Console.WriteLine("Static Constructor");    
}

静的コンストラクターを直接呼び出すことはできません。ただし、通常のコンストラクターを呼び出すと、静的コンストラクターが自動的に呼び出されます。

Car car1 = new Car();

ここでは、Car() を呼び出しています。 コンストラクタ。静的コンストラクターも通常のコンストラクターと一緒に呼び出されることがわかります。

出力

Static Constructor
Default Constructor
Default Constructor

静的コンストラクターは、プログラムの実行中に 1 回だけ呼び出されます。そのため、コンストラクターを再度呼び出すと、通常のコンストラクターのみが呼び出されます。

注意 :クラスには静的コンストラクターを 1 つしか持てません。パラメータやアクセス修飾子を持つことはできません。


C# コンストラクターのオーバーロード

C# では、1 つのクラスに 2 つ以上のコンストラクターを作成できます。これは、コンストラクターのオーバーロードとして知られています。たとえば、

using System;

namespace ConstructorOverload {

  class Car {   
    
    // constructor with no parameter
    Car() {
      Console.WriteLine("Car constructor");
    }
     
    // constructor with one parameter
    Car(string brand) {
      Console.WriteLine("Car constructor with one parameter");
      Console.WriteLine("Brand: " + brand);
    }

    static void Main(string[] args) {

      // call constructor with no parameter
      Car car = new Car();

      Console.WriteLine();

      // call constructor with parameter
      Car car2 =  new Car("Bugatti");
     
      Console.ReadLine();
    }
  }
}

出力

Car constructor

Car constructor with one parameter
Brand: Bugatti

上記の例では、Car をオーバーロードしています。 コンストラクタ:

コンストラクターの呼び出し中に渡された引数の数に基づいて、対応するコンストラクターが呼び出されます。

ここで、

詳細については、C# コンストラクターのオーバーロードをご覧ください。


C言語

  1. C# ネストされたクラス
  2. C# コンストラクターのオーバーロード
  3. C++ コンストラクター
  4. Java コンストラクター
  5. Java 列挙型コンストラクター
  6. 車のサスペンションシステムはどのように機能しますか?
  7. 車のエンジンクーラントとは何ですか?
  8. Java-コンストラクター
  9. 自動車エンジンのシリンダー構成
  10. 車の延長保証について
  11. 車のオイルフィルターが漏れるのはなぜですか?