Как отличить статический метод от метода, который вызывается на конкретном объекте класса?
Ответ от нейросети
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и вызывается через имя класса. - Метод экземпляра вызывается только через объект класса.
- Статический метод не имеет доступа к нестатическим членам без ссылки на объект.
- Метод экземпляра может обращаться к полям и свойствам конкретного объекта.
- Если логика не зависит от состояния объекта, часто подходит статический метод.
- Если поведение связано с данными объекта, нужен метод экземпляра.