In C# wird der Fehler „ein Objektverweis“ angezeigt ist für das nicht-statische Feld, die nicht-statische Methode oder die nicht-statische Eigenschaft erforderlich …“ tritt auf, wenn versucht wird, über eine statische Methode auf ein nicht-statisches Mitglied zuzugreifen. Dieser Fehler tritt auf, weil statische Methoden nicht auf instanzspezifische Daten zugreifen können.
Im bereitgestellten Codeausschnitt tritt das Problem innerhalb der „Main“-Methode auf, die als statisch deklariert ist, während die „volteado“ und „siprimo“-Methoden sind nicht statisch. Um diesen Fehler zu beheben, müssen die Methoden „siprimo“ und „volteado“ als statisch deklariert werden. Durch Hinzufügen des Schlüsselworts „static“ kann auf diese Methoden direkt innerhalb der statischen Methode „Main“ zugegriffen werden. Hier ist der korrigierte Code:
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; } } }
Das obige ist der detaillierte Inhalt vonWarum tritt beim Aufrufen nichtstatischer Methoden aus einer statischen Methode in C# die Fehlermeldung „Eine Objektreferenz ist erforderlich' auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!