C# | Почему из статического метода при вызове обычного метода выдает ошибку?

Мне был дан код, и я должен был ответить, что выведет этот код. Мой вариант оказался неверным, так как код выведет ошибку. В этом коде создаётся метод Function, переменная y со значением: 13. И в методе Main вызываю свой метод с параметром y. Этот код выдает ошибку. Но, если сделать метод статичным, он не выдаёт ошибку, и все работает. Объясните пожалуйста почему?

Код:

int Function(int x)
{
    return x;
}
static void Main()
{
    int y = 13;
    Function(y) // Error
}

Ответы (1 шт):

Автор решения: Алексей Шиманский

Ответ можно найти в любой книге по C# и не только. Например https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/static

Модификатор static используется для объявления статического члена, принадлежащего собственно типу, а не конкретному объекту

или https://metanit.com/sharp/tutorial/3.6.php

Статические поля, методы, свойства относятся ко всему классу и для обращения к подобным членам класса необязательно создавать экземпляр класса.

В этом и подсказка.

Нельзя обратиться к методу экземпляра класса, если этого экземпляра не существует и в помине. А Function можно вызывать лишь у экземпляра класса (т.е. у конкретного объекта, который был создан при помощи ключевого слова new (например MyClass myvar = new MyClass()))

→ Ссылка