Heim > Backend-Entwicklung > C++ > Warum wirft C# die Meldung „Für das nichtstatische Feld, die nicht-statische Methode oder die nichtstatische Eigenschaft ist eine Objektreferenz erforderlich' aus?

Warum wirft C# die Meldung „Für das nichtstatische Feld, die nicht-statische Methode oder die nichtstatische Eigenschaft ist eine Objektreferenz erforderlich' aus?

Linda Hamilton
Freigeben: 2025-01-22 05:31:09
Original
218 Leute haben es durchsucht

Why Does C# Throw

C#-Ausnahme: „Für den Zugriff auf ein nicht statisches Feld, eine Methode oder eine Eigenschaft ist eine Objektreferenz erforderlich“

In C# tritt der Fehler „Objektverweis ist erforderlich, um auf ein nicht statisches Feld, eine nicht statische Methode oder eine Eigenschaft zuzugreifen“ normalerweise auf, wenn eine statische Methode versucht, auf ein nicht statisches Mitglied der Klasse zuzugreifen.

Der Fehler in diesem Artikel tritt in der folgenden Codezeile in der Main-Methode auf:

<code class="language-c#">Population[i].bits = GetRandomBits();</code>
Nach dem Login kopieren

Das Problem liegt bei der Methode GetRandomBits, die als nicht statische Methode in der Klasse Program deklariert ist. Allerdings ist die Main-Methode als statische Methode definiert, was bedeutet, dass sie nur auf statische Mitglieder der Klasse zugreifen kann.

Lösung

Es gibt zwei Möglichkeiten, diesen Fehler zu beheben:

1. Erstellen Sie eine Instanz der Klasse:

Statische Methoden können nicht direkt auf nicht statische Mitglieder zugreifen. Um über eine statische Methode auf eine nicht statische Methode oder Eigenschaft zuzugreifen, erstellen Sie zunächst eine Instanz der Klasse und rufen dann die Methode auf oder greifen über diese Instanz auf die Eigenschaft zu. Zum Beispiel:

<code class="language-c#">// 创建 Program 类的实例
Program p = new Program();

// 通过实例调用 GetRandomBits 方法
Population[i].bits = p.GetRandomBits();</code>
Nach dem Login kopieren

2. Machen Sie die Methode statisch:

Alternativ können Sie es zu einer statischen Methode machen, indem Sie das Schlüsselwort Program hinzufügen, wenn Sie die Methode GetRandomBits in der Klasse static deklarieren. Auf diese Weise können statische Main-Methoden direkt auf die GetRandomBits-Methode zugreifen, ohne eine Instanz zu erstellen. Zum Beispiel:

<code class="language-c#">public static string GetRandomBits()
{
    // 方法实现
}</code>
Nach dem Login kopieren

Mit jeder der oben genannten Methoden können Sie den Fehler beseitigen und dafür sorgen, dass die Main-Methode korrekt auf die GetRandomBits-Methode zugreift.

Das obige ist der detaillierte Inhalt vonWarum wirft C# die Meldung „Für das nichtstatische Feld, die nicht-statische Methode oder die nichtstatische Eigenschaft ist eine Objektreferenz erforderlich' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage