Maison >développement back-end >C++ >Pourquoi « Une référence d'objet est requise » se produit-il lors de l'appel de méthodes non statiques à partir d'une méthode statique en C# ?

Pourquoi « Une référence d'objet est requise » se produit-il lors de l'appel de méthodes non statiques à partir d'une méthode statique en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-22 17:46:11544parcourir

Why Does

Erreur : "Une référence d'objet est requise pour le champ, la méthode ou la propriété non statique..."

En C#, l'erreur "une référence d'objet est requis pour le champ, la méthode ou la propriété non statique..." se produit lors de la tentative d'accès à un membre non statique à partir d'une méthode statique. Cette erreur se produit en raison de l'incapacité des méthodes statiques à accéder aux données spécifiques à l'instance.

Dans l'extrait de code fourni, le problème survient au sein de la méthode "Main", qui est déclarée statique, tandis que "volteado" et Les méthodes "siprimo" sont non statiques. Pour résoudre cette erreur, les méthodes "siprimo" et "volteado" doivent être déclarées statiques. En ajoutant le mot-clé "static", ces méthodes sont accessibles directement dans la méthode statique "Main". Voici le code corrigé :

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Write a number: ");
            long a = Convert.ToInt64(Console.ReadLine()); // a is the number given by the user

            long av = volteado(a); // av is "a" but swapped

            if (siprimo(a) == false && siprimo(av) == false)
                Console.WriteLine("Both original and swapped numbers are prime.");
            else
                Console.WriteLine("One of the numbers isn't prime.");
            Console.ReadLine();
        }

        private static bool siprimo(long a) // Declare siprimo as static
        {
            // Evaluate if the received number is prime
            bool sp = true;
            for (long k = 2; k <= a / 2; k++)
                if (a % k == 0) sp = false;
            return sp;
        }

        private static long volteado(long a) // Declare volteado as static
        {
            // Swap the received number
            long v = 0;
            while (a > 0)
            {
                v = 10 * v + a % 10;
                a /= 10;
            }
            return v;
        }
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn