Heim >Backend-Entwicklung >C++ >Warum gibt mein C#-Code den Fehler „Für das nicht statische Feld, die nicht statische Methode oder die nicht statische Eigenschaft ist eine Objektreferenz erforderlich' aus?

Warum gibt mein C#-Code den Fehler „Für das nicht statische Feld, die nicht statische Methode oder die nicht statische Eigenschaft ist eine Objektreferenz erforderlich' aus?

Barbara Streisand
Barbara StreisandOriginal
2025-01-22 05:36:09442Durchsuche

Why Does My C# Code Throw

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

In diesem C#-Code tritt ein Fehler in der Zeile Main() innerhalb der Methode Population[i].bits = GetRandomBits(); auf. Die Fehlermeldung lautet „Für den Zugriff auf nicht statische Felder, Methoden oder Eigenschaften „VM_Placement.Program.GetRandomBits“ ist eine Objektreferenz erforderlich ()'". Dieser Fehler weist darauf hin, dass eine nicht statische Methode Main() von einer statischen Methode GetRandomBits() aufgerufen wird.

In C# sind statische Methoden einer Klasse und nicht einer bestimmten Instanz der Klasse zugeordnet, während nicht statische Methoden Instanzen der Klasse zugeordnet sind. Das bedeutet, dass nicht-statische Methoden eine Instanz der Klasse benötigen, um aufgerufen zu werden.

Für diesen speziellen Fall gibt es zwei Lösungen, um diesen Fehler zu beheben:

  • Erstellen Sie eine Instanz der Program-Klasse:
<code class="language-csharp">Program p = new Program();
p.GetRandomBits();</code>

Durch das Erstellen einer Instanz der Program-Klasse kann GetRandomBits() für diese Instanz aufgerufen werden, da es sich nun um eine Instanzmethode handelt.

  • Machen Sie die GetRandomBits()-Methode statisch:
<code class="language-csharp">public static string GetRandomBits()
{
    // ...
}</code>

Machen Sie GetRandomBits() statisch, sodass es direkt von einer statischen Main()-Methode aufgerufen werden kann, ohne dass eine Instanz der Klasse erforderlich ist.

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

Stellungnahme:
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