Sobes.tech
Назад к вопросам
Junior — Middle
65

Как отличить статический метод от метода, который вызывается на конкретном объекте класса?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

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

Определение:

В C# статический метод объявляется с ключевым словом static и принадлежит классу, а не экземпляру. Его можно вызвать через имя класса. Метод экземпляра не имеет static, вызывается через объект и может обращаться к полям и свойствам этого объекта.

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

public class MathHelper
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

public class User
{
    public string Name { get; set; }

    public void PrintName()
    {
        Console.WriteLine(Name);
    }
}

// Вызов статического метода
int sum = MathHelper.Add(2, 3);

// Вызов метода экземпляра
var user = new User { Name = "Alex" };
user.PrintName();

Пояснение кода:

В примере Add объявлен как static, поэтому он вызывается через MathHelper.Add(...) без создания объекта MathHelper. Такой метод не использует состояние конкретного экземпляра.

PrintName — метод экземпляра. Сначала создается объект User, у него задается свойство Name, и только потом вызывается user.PrintName(). Этот метод работает с данными конкретного объекта.

Ключевые моменты:

  • Статический метод объявляется с static и вызывается через имя класса.
  • Метод экземпляра вызывается только через объект класса.
  • Статический метод не имеет доступа к нестатическим членам без ссылки на объект.
  • Метод экземпляра может обращаться к полям и свойствам конкретного объекта.
  • Если логика не зависит от состояния объекта, часто подходит статический метод.
  • Если поведение связано с данными объекта, нужен метод экземпляра.