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
Libérer: 2025-01-22 17:46:11
original
602 Les gens l'ont consulté

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;
        }
    }
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal