산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
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()라는 생성자를 만들었습니다. . 생성자는 두 개의 매개변수를 사용합니다. theBrand가격 .

진술을 주목하십시오.

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

여기서는 두 값을 생성자에 전달합니다.

생성자에 전달된 값을 인수라고 합니다. 매개변수와 동일한 수와 유형의 값을 전달해야 합니다.

<시간>

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 변수 물체. 따라서 두 개체 모두 brand의 동일한 값을 갖습니다. .

<시간>

5. 개인 생성자

private을 사용하여 개인 생성자를 만들 수 있습니다. 액세스 지정자. 이것은 C#에서 private 생성자로 알려져 있습니다.

생성자가 private로 선언되면 다른 클래스에서 해당 클래스의 개체를 만들 수 없습니다.

예시 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

참고 :생성자가 private이면 클래스의 객체를 생성할 수 없습니다. 따라서 클래스의 모든 필드와 메서드는 클래스 이름을 사용하여 액세스할 수 있도록 static으로 선언되어야 합니다.

<시간>

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

정적 생성자는 프로그램 실행 중에 한 번만 호출됩니다. 그래서 생성자를 다시 호출하면 일반 생성자만 호출됩니다.

참고 :클래스에는 정적 생성자가 하나만 있을 수 있습니다. 매개변수나 액세스 수정자를 가질 수 없습니다.

<시간>

C# 생성자 오버로딩

C#에서는 클래스에 두 개 이상의 생성자를 만들 수 있습니다. 생성자 오버로딩이라고 합니다. 예를 들어,

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. 자바 생성자
  5. 자바 열거형 생성자
  6. 자동차 엔진 냉각수란 무엇입니까?
  7. 자바 - 생성자
  8. 자동차 엔진 실린더 구성
  9. 연장된 자동차 보증 이해하기
  10. 자동차 오일 필터가 누출되는 이유는 무엇입니까?