Une référence d'objet est requise pour le champ non statique, une méthode ou une propriété

Je sais que les gens ont demandé à propos de cette question avant, mais le scénario est trop précis et je suis confus au sujet des principes fondamentaux.

J'ai deux versions de base d'un programme C#, celui qui travaille et celui qui ne l'est pas. J'aimerais si quelqu'un pouvait expliquer pourquoi j'ai l'erreur Une référence d'objet est requise pour le champ non statique, la méthode ou la propriété dans le second programme.

Travaux:

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)
                ;
        }
    }
}

Ne fonctionne pas:

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)
                ;
        }
    }
}

Quand j'essaie de Print() le texte de la Test() classe dans le deuxième programme, il me donne cette erreur Une référence d'objet est requise pour le champ non statique, la méthode ou la propriété, et je ne comprends pas pourquoi. Je peux voir qu'il a à faire avec où je déclare une instance de Test() de la classe, mais je ne me souviens pas de quelque chose comme ce qui se passe en C++, il mystifie moi.

Ce qu'il se passe?

OriginalL'auteur Simflare | 2016-10-20