Wprowadzenie do konstruktora w C #

Konstruktor odgrywa bardzo ważną rolę w programowaniu obiektowym. Pozwól nam zrozumieć rolę konstruktora w języku C # za pomocą następujących punktów:

  • Konstruktor to specjalna metoda obecna w klasie, która jest odpowiedzialna za inicjowanie zmiennych klasy.
  • Jego nazwa jest taka sama jak nazwa klasy.
  • Jest on automatycznie wykonywany, gdy tworzymy instancję klasy.
  • Konstruktor nie zwraca żadnej wartości.
  • Jeśli nie zdefiniujemy konstruktora, domyślny konstruktor jest zawsze zapewniany przez klasę zwaną konstruktorem domyślnym.

Składnia:

public class Student()
(
//constructor
public Student()
(
//code
)
)

Tutaj public Student () jest metodą, która nie ma żadnego typu zwracanego, nawet nieważnego, a jej nazwa jest taka sama jak nazwa klasy, tj. „Student”. Zatem ta metoda jest konstruktorem tej klasy.

Kiedy utworzymy obiekt tej klasy za pomocą:

Student obj = new Student();

Następnie kod wewnątrz konstruktora zostanie wykonany.

Praca konstruktora w C #

1. Konstruktor inicjuje elementy danych dla nowego obiektu. Jest on wywoływany przez „nowego” operatora natychmiast po przydzieleniu pamięci do nowego obiektu.

2. Jawne konstruktory (konstruktory zdefiniowane przez użytkownika) mogą być parametryzowane lub sparametryzowane. Jeśli jest sparametryzowane, wówczas wartości przekazane do konstruktora można przypisać do elementów danych klasy.

3. Domniemany konstruktor inicjuje zmienne klasy o tej samej wartości, nawet jeśli tworzymy wiele instancji tej klasy.

Przykład:

Kod:

using System;
public class ConstructorDemo
(
public int num = 10;
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo();
ConstructorDemo obj2 = new ConstructorDemo();
ConstructorDemo obj3 = new ConstructorDemo();
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Wynik:

Obrazkowa reprezentacja powyższego programu:

4. Jawny konstruktor z parametrami pozwala nam inicjalizować zmienne klasy o innej wartości za każdym razem, gdy tworzymy instancję tej klasy.

Przykład:

Kod:

using System;
public class ConstructorDemo
(
public int num;
//explicit constructor
public ConstructorDemo(int num)
(
this.num = num;
)
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo(10);
ConstructorDemo obj2 = new ConstructorDemo(20);
ConstructorDemo obj3 = new ConstructorDemo(30);
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Wynik:

Obrazkowa reprezentacja powyższego programu:

Top 5 rodzajów konstruktorów w C #

C # zapewnia pięć typów konstruktorów. Są to:

1. Domyślny konstruktor

  • Konstruktor bez żadnego parametru nazywa się Konstruktor domyślny. Jeśli nie zdefiniujemy tego jawnie, zostanie to domyślnie dostarczone przez kompilator.
  • W takim przypadku możemy nazwać to niejawnym konstruktorem. Domyślny lub niejawny konstruktor inicjuje wszystkie elementy danych klasy ich wartościami domyślnymi, takimi jak wszystkie pola numeryczne na zero, a wszystkie pola łańcuchowe i obiektowe na zero.

Przykład:

Kod:

using System;
public class DefaultConstructor
(
public int num;
public string str;
)
public class Demo
(
public static void Main()
(
DefaultConstructor obj = new DefaultConstructor();
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Wynik:

2. Sparametryzowany konstruktor

Konstruktor z co najmniej jednym parametrem nazywa się Konstruktor sparametryzowany. Parametry do konstruktora można przekazać podczas tworzenia instancji klasy. Pozwala nam inicjować każde wystąpienie klasy za pomocą różnych wartości.

Przykład:

Kod:

using System;
public class ParameterizedConstructor
(
public int num;
public string str;
//parameterized constructor
public ParameterizedConstructor(int num, string str)
(
this.num = num;
this.str = str;
)
)
public class Demo
(
public static void Main()
(
//passing values to constructor while creating instance
ParameterizedConstructor obj = new ParameterizedConstructor(50, "constructor");
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Wynik:

3. Kopiuj konstruktora

Jest sparametryzowanym konstruktorem, który przyjmuje obiekt tej samej klasy jako parametr. Kopiuje wartość istniejącego obiektu (który jest przekazywany jako parametr) do nowo utworzonego obiektu utworzonego przez konstruktor. Można powiedzieć, że kopiuje dane jednego obiektu do innego obiektu.

Przykład:

Kod:

using System;
public class CopyConstructor
(
public int num;
public CopyConstructor(int num)
(
this.num = num;
)
//copy constructor
public CopyConstructor(CopyConstructor obj)
(
num = obj.num;
)
)
public class Demo
(
public static void Main()
(
CopyConstructor obj1 = new CopyConstructor(50);
//passing same class's object as parameter
CopyConstructor obj2 = new CopyConstructor(obj1);
Console.WriteLine("Original object:");
Console.WriteLine("obj1.num = "+obj1.num);
Console.WriteLine("\nCopied object:");
Console.WriteLine("obj2.num = "+obj2.num);
)
)

Wynik:

4. Konstruktor statyczny

  • Można go zdefiniować, poprzedzając nazwę konstruktora słowem kluczowym. Jest niejawnie zdefiniowany przez kompilator (jeśli nie jest zdefiniowany jawnie), jeśli klasa zawiera dowolną zmienną statyczną.
  • Jest to pierwszy blok, który zostanie wykonany w klasie i zostanie wywołany automatycznie. Zostanie on wykonany tylko raz, niezależnie od liczby wystąpień klasy. Jest bez parametrów i nie akceptuje żadnych modyfikatorów dostępu.

Przykład:

Kod:

using System;
public class StaticConstructor
(
//static constructor
static StaticConstructor()
(
Console.WriteLine("Static constructor executed");
)
public static void Display()
(
Console.WriteLine("\nDisplay method executed");
)
)
public class Demo
(
public static void Main()
(
StaticConstructor.Display();
)
)

Wynik:

5. Prywatny konstruktor

Konstruktor utworzony za pomocą prywatnego specyfikatora nazywa się konstruktorem prywatnym. Nie możemy utworzyć instancji klasy, jeśli zawiera ona tylko prywatnego konstruktora i nie pozwala innym klasom na uzyskanie tej klasy. Używany w klasie, która zawiera tylko elementy statyczne.

Przykład:

Kod:

using System;
public class PrivateConstructor
(
public static int num = 100;
//private constructor
private PrivateConstructor()
(
)
)
public class Demo
(
public static void Main()
(
//PrivateConstructor obj = new PrivateConstructor(); //Error
Console.WriteLine("num = "+PrivateConstructor.num);
)
)

Wynik:

Wniosek

Jeśli zdefiniujemy dowolny typ konstruktora w klasie, nie będzie żadnego niejawnego konstruktora w klasie dostarczonej przez kompilator. Podobnie jak metody, sparametryzowane konstruktory mogą być również przeciążone inną liczbą parametrów. Konstruktory zdefiniowane domyślnie przez kompilator są zawsze publiczne.

Polecany artykuł

To jest przewodnik po Konstruktorze w C #. Tutaj omawiamy typy Konstruktora w C # i jego działanie wraz z implementacją i wyjściem kodu. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Konstruktor w JavaScript i typy
  2. Co to jest generator liczb losowych w C #?
  3. Konstruktor w C ++ i typach
  4. Kopiuj konstruktora w C # (przykłady)
  5. Static Constructor w Javie | Praca | Aplikacje