0Pricing
C# Academy · Урок

Конструкторы и статические члены

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

«Конструкторы и статические члены» — бесплатный урок C# Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.

Обзор конструкторов и static

Цель: Безопасно создавать объекты и совместно использовать данные между экземплярами.

  • Конструкторы задают обязательное состояние
  • Перегрузки и цепочка вызовов через this(...)
  • Статические fields и methods, общие для всех объектов

Базовый конструктор

Конструктор выполняется при вызове new и инициализирует объект.

using System;

// Constructor sets required data on creation
public class User
{
  public string Name { get; private set; }
  public int Age { get; private set; }

  public User(string name, int age)
  {
    Name = name;
    Age = age;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    User u = new User("Ada", 28);
    Console.WriteLine(u.Name + " (" + u.Age + ")");
  }
}

Перегрузки и цепочка вызовов

Используйте перегрузку конструкторов для удобства, а this(...) — для повторного использования логики.

using System;

// Overloads let you offer defaults; chain with this(...)
public class Point2D
{
  public int X { get; private set; }
  public int Y { get; private set; }

  public Point2D(int x, int y)
  {
    X = x; Y = y;
  }

  public Point2D(int xy) : this(xy, xy) { } // calls the main constructor
}

public class Program
{
  public static void Main(string[] args)
  {
    Point2D p1 = new Point2D(3, 4);
    Point2D p2 = new Point2D(5); // becomes (5,5)
    Console.WriteLine("p1: " + p1.X + "," + p1.Y);
    Console.WriteLine("p2: " + p2.X + "," + p2.Y);
  }
}

Статические члены

Статические члены являются общими для всех экземпляров. Вызывайте статические methods через имя типа.

using System;

// Static members live on the type (one copy shared)
public class Counter
{
  private static int _created = 0;   // shared count
  public int Id { get; private set; }

  public Counter()
  {
    _created = _created + 1;
    Id = _created;
  }

  public static int CreatedCount()
  {
    return _created;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Counter a = new Counter();
    Counter b = new Counter();
    Console.WriteLine("a.Id=" + a.Id + ", b.Id=" + b.Id);
    Console.WriteLine("Total created = " + Counter.CreatedCount());
  }
}

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

Статический конструктор выполняется один раз для каждого типа. Используйте const для литералов времени компиляции, а static readonly — для значений, задаваемых во время выполнения.

using System;

public class AppConfig
{
  public const string AppName = "Demo";      // compile-time constant
  public static readonly DateTime StartedAt; // runtime-initialized once

  // Static constructor: runs once before first use of the type
  static AppConfig()
  {
    StartedAt = DateTime.UtcNow;
  }

  public static string Info()
  {
    return AppName + " started at " + StartedAt.ToString("u");
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(AppConfig.Info());
    Console.WriteLine(AppConfig.Info()); // static ctor ran only once
  }
}

Советы

Советы:

  • Делайте конструкторы небольшими; проверяйте входные данные как можно раньше.
  • Используйте перегрузки для распространённых значений по умолчанию; направляйте их к одному основному конструктору.
  • Используйте static, когда данные действительно относятся к типу (например, счётчики и вспомогательные средства).

Концепция статических членов

Быстрая проверка: какое утверждение о статических членах верно?

Итоги

Итоги: Используйте конструкторы для задания обязательного состояния, перегрузки и цепочку вызовов для удобства, а также добавляйте static-члены для данных или вспомогательных средств, общих для всех объектов.

Часто задаваемые вопросы

Урок «Конструкторы и статические члены» бесплатный?

Да — полный текст урока «Конструкторы и статические члены» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.

Чему я научусь в уроке «Конструкторы и статические члены»?

Создавайте объекты с помощью конструкторов (включая перегрузку и цепочки вызовов) и используйте статические поля и методы для хранения данных, общих для всех экземпляров. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.

Сколько времени занимает урок «Конструкторы и статические члены»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Поля, автоматически реализуемые свойства, инициализаторы объектов
  2. Конструкторы и статические члены
  3. Инкапсуляция и инварианты
← Назад к C# Academy