Я знаю, что люди задавали этот вопрос раньше, но сценарий был слишком конкретным, и я смущен об основных принципах.Ссылка на объект обязательна для нестатического поля, метода или свойства
У меня есть две базовые версии программы C#, одна из которых работает, а другая - нет. Мне бы это понравилось, если бы кто-нибудь мог объяснить, почему я получаю ошибку Ссылка на объект требуется для нестатического поля, метода или свойства во второй программе.
работы:
namespace Experiments
{
class Test
{
public string myTest = "Gobbledigook";
public void Print()
{
Console.Write(myTest);
}
}
class Program
{
static void Main(string[] args)
{
Test newTest = new Test();
newTest.Print();
while (true)
;
}
}
}
не работает:
namespace Experiments
{
class Test
{
public string myTest = "Gobbledigook";
public void Print()
{
Console.Write(myTest);
}
}
class Program
{
public Test newTest = new Test();
static void Main(string[] args)
{
newTest.Print();
while (true)
;
}
}
}
Когда я пытаюсь Print() текст из Test() класса во второй программе, это дает me, что ошибка Ссылка на объект требуется для нестатического поля, метода или свойства, и я не понимаю, почему. Я вижу, что это связано с тем, где я объявляю экземпляр класса Test(), но я не помню ничего подобного в C++, поэтому меня это озадачивает.
Что происходит?
не создает статический переменные плохую практику, кроме как в исключительных случаях, так же, как – Simflare
продолжал предыдущим - так же, как глобальные переменные не рекомендуются в C++? – Simflare
Спасибо за ваш хорошо продуманный ответ btw :) – Simflare