Что такое конструктор в C#

Конструктор - это специальный метод, который используется для инициализации объекта. Каждый класс имеет конструктор, если мы явно не объявляем конструктор для любого класса C#, компилятор строит конструктор по умолчанию для этого класса. Конструктор не имеет никакого типа возврата. Конструкторы отвечают за инициализацию объекта и выделение памяти его класса.

Конструктор C# вызывается во время создания объекта. Он создает значения, т.е. предоставляет данные для объекта, поэтому он известен как конструктор.

Правила создания конструктора

Существуют два правила, определенные для конструктора.

  1. Имя конструктора должно совпадать с именем класса
  2. Конструктор не должен иметь явного типа возврата

Тип конструкторов:

Существует два типа конструкторов:

  1. Конструктор по умолчанию (конструктор no-arg)
  2. Параметрированный конструктор

Конструктор по умолчанию C#

Конструктор, который не имеет параметра, известен как конструктор по умолчанию.

Пример:

using System; 
Class Student{
 int roll; float marks;
 public Student() //constructor
{ 
 roll=0; 
 marks=0.0; 
 }
 // other members 
}

Вышеупомянутый конструктор Student () не принимает никаких аргументов, поэтому он является примером конструктора default / non-parameterized.
С помощью этого типа конструктора объект будет создан следующим образом:

Student obj1 = new Student();

Параметрированный конструктор в C#

Class Student 
{ 
int roll; 
float marks;
public Student(int a, float b)//constructor
{ 
 roll = a; 
 marks = b; 
 } 
//other members
 }

Вышеуказанный конструктор принимает два аргумента один int и другой float для инициализации роли экземпляров экземпляров и меток для вновь созданного объекта, и поэтому он называется параметризованным конструктором. С помощью этого типа конструктора объект будет создан следующим образом:

Student obj = new Student( 17 , 58.08F);

Перегрузка конструктора

Подобно методам, конструктор также может быть перегружен. Перегруженные конструкторы дифференцируются по их типу параметров или количеству параметров. Перегрузка конструктора не сильно отличается от перегрузки метода. В случае перегрузки метода у вас есть несколько методов с одним и тем же именем, но с другой подписью, тогда как при перегрузке конструктора у вас есть несколько конструкторов с различной подписью, но разница только в том, что у конструктора нет типа возврата на C#.

using System; 
public Class OverloadStudent 
{ 
public OverloadStudent () 
{ 
//Конструктор по умолчанию
} 
public OverloadStudent (int age) 
{ 
//Конструктор одиночных параметров
} 
public OverloadStudent (int age, string name) 
{ 
//два конструктора параметров
} 
}

Теперь следуем способы, с помощью которых мы можем создать экземпляр объекта.

OverloadStudent obj=new OverloadStudent() ;
OverloadStudent obj=new OverloadStudent(43) ;
OverloadStudent obj=new OverloadStudent(47,"Steve") ; 

Статический конструктор:

Статический конструктор - это специальный конструктор, который вызывается до создания первого объекта класса. Он используется для инициализации любых статических данных или для выполнения определенного действия, которое необходимо выполнить только один раз.
Время выполнения статического конструктора неизвестно, но это определенно до создания первого объекта - может быть во время загрузки сборки.

// Example1
using System;
public Class Student
 {
 static Student() 
{ 
// инициализировать только статические элементы.
 }
 // другие методы здесь.
 }
// Example2
using System;
public class MyStaticClass 
{ 
static int count; 
static MyStaticClass() 
{ 
count = 0; 
Console.WriteLine("Static class is initialized"); 
} 
public static void MyMethod(string name) 
{ 
Console.WriteLine("Static class is initialized " + name); 
} 
}
MyStaticClass.MyMethod("Steve") ; //method call
//конструктор будет вызван автоматически
 
Output:
Static class is initialized Hello Steve

Правила для статического конструктора:

  • Класс может иметь только один статический конструктор
  • Статический конструктор не может иметь никакого параметра
  • У статического конструктора не может быть спецификатора доступа
  • Он используется для инициализации статических элементов данных класса
  • для любого количества создания объекта статический конструктор запускается только один раз
  • Статический конструктор запускается при использовании класса
  • Программист не может вызывать статический конструктор

У нас может быть 2 конструктора.

using System; 
public Class question {
 static Students()
 { 
//initialize static member only.
 } 
public Students() 
{ 
// коды для первого конструктора класса получения.
 }
 }

Частный конструктор:

Частный конструктор - это специальный конструктор экземпляров, который используется в классе, который содержит только статический член.
Если у класса есть один или несколько частных конструкторов и нет общего конструктора, тогда другим классам не разрешается создавать экземпляр этого класса.

using System; 
public Class Student{
private Student() 
{ 
 Console.WriteLine("Это не частный конструктор параметров");
 }
 public Student(int a):this() 
{ 
Console.WriteLine("Это один параметр public constructor");
 }
 }

Объект класса может быть создан как:

 Student obj = new Student(20) ; 

Но определение такого объекта не будет работать.

Student obj = new Student() ;

Правила для частного конструктора:

  • одно использование частного конструктора - это когда у нас есть только статический член.
  • Он обеспечивает реализацию шаблона одноэлементного класса
  • Когда мы предоставим конструктор (private / public / any), компилятор не добавит конструктор public без параметров в любой класс.

 

Источник: http://www.csharpstar.com/csharp-constructor/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 3,00 из 5)
Adblock
detector