четверг, 30 декабря 2021 г.

Конструктор класса C#

• Конструкторы класса  применяются  для создания нового объекта. 

• Конструкторы класса применяются для начальной инициализации полей класса.

• Конструктор класса вызывается с помощью ключевого слова new.

• Имя конструктора должно совпадать с именем класса.

• Конструктор, как и обычные методы класса, может принимать параметры или быть без параметров. 

• В классе могут быть несколько конструкторов. 

• Если в классе определяются несколько конструкторов, они должны отличаться по числу параметров.

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

• В общем виде объявление конструктора выглядит так:

  1. class Имя_Класса
  2. {
  3. Модификатор_Доступа Имя_Класса() { }
  4. }

• Конструкторы не могут иметь возвращаемого значения в отличие от других методов класса. 

Пример использования конструктора:


  1. class Sample {

  2. private int _sampleVariable;
  3. // Конструктор без параметров
  4. public Sample()
  5. {
  6. _sampleVariable = -1;
  7. }
  8. // Конструктор с одним параметром
  9. public Sample(int sampleVariable)
  10. {
  11. _sampleVariable = sampleVariable;
  12. }
  13. }

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

Конструкторы классов при наследовании вызываются в порядке от базового к производному. Этот порядок можно посмотреть запустив следующую программу:

  1. class A {
  2. public A() {
  3. Console.WriteLine( "Вызов конструктора класса A" );
  4. }
  5. }
  6. class B : A {
  7. public B() {
  8. Console.WriteLine( "Вызов конструктора класса B" );
  9. }
  10. }
  11. class C : B {
  12. public C() {
  13. Console.WriteLine( "Вызов конструктора класса C" );
  14. }
  15. }
  16. public class Person {
  17. static void main() {
  18. C c = new C();
  19. }
  20. }
  21. // Вывод:
  22. // Вызов конструктора класса A
  23. // Вызов конструктора класса B
  24. // Вызов конструктора класса C

Вызов конструктора базового класса

Иногда может потребоваться явный вызов конструктора базового класса. 

Например, если в базовом классе есть несколько конструкторов, и требуется вызвать какой то конкретный. 

Для вызова конструктора базового класса применяется ключевое слово base.

Пример вызова конструктора базового класса:

  1. class Point {
  2. public int X { get; set; }
  3. public int Y { get; set; }
  4. public Point() { }

  5. public Point( int x, int y ) {
  6. X = x;
  7. Y = y;
  8. }
  9. }
  10. class Point3D : Point
  11. {
  12. public int Z { get; set; }
  13. public Point3D() { }
  14. public Point3D( int x, int y, int z )
  15. : Point( x, y ) // Вызов конструктора базового класса
  16. {
  17. Z = z;
  18. }
  19. }

Вызов конструктора из другого конструктора

Вызов конструктора из другого конструктора в том же классе возможен при использовании ключевого слова this.

  1. class Sample
  2. {
  3. private int _sampleVariable;
  4. private int _anotherVariable;
  5. public Sample( int sampleVariable )
  6. {
  7. _sampleVariable = sampleVariable;
  8. }
  9. public Sample( int sampleVariable, int anotherVariable )
  10. : this ( sampleVariable ) // Вызов конструктора Sample( int )
  11. {
  12. _anotherVariable = anotherVariable;
  13. }
  14. }

Модификаторы доступа применяемые к конструкторам

К конструкторам классов в C# могут применяться все модификаторы доступа, которые могут применяться к членам класса – это publicprivateprotectedinternalprotected internal

Однако если объявить конструктор класса с модификатором доступа private, то экземпляры такого класса нельзя будет создать.


Комментариев нет:

Отправить комментарий

Паттерн 'Репозиторий' в ASP.NET

  Последнее обновление: 1.11.2015         Одним из наиболее часто используемых паттернов при работе с данными является паттерн 'Репозито...