Heim > Backend-Entwicklung > C++ > Warum wird „Eine Objektreferenz ist erforderlich' angezeigt, wenn in C# eine nichtstatische Methode aus einer statischen Methode aufgerufen wird?

Warum wird „Eine Objektreferenz ist erforderlich' angezeigt, wenn in C# eine nichtstatische Methode aus einer statischen Methode aufgerufen wird?

DDD
Freigeben: 2025-01-22 05:24:16
Original
193 Leute haben es durchsucht

Why Does

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

Das bereitgestellte Code-Snippet löst einen Fehler in Klasse 2 (Implementierender Algorithmus) aus, da versucht wird, über eine statische Methode Main() auf eine nicht statische Methode GetRandomBits() zuzugreifen.

In der Main()-Methode verursachte die Zeile Population[i].bits = GetRandomBits(); den Fehler. Das Problem besteht darin, dass GetRandomBits() eine nicht statische Methode in der Klasse Program ist, während Main() eine statische Methode ist.

Lösung: statisch vs. nicht statisch

  • Nichtstatische Methoden: Müssen von einer Instanz (Objekt) einer Klasse aufgerufen werden.
  • Statische Methoden: können direkt aus dem Klassennamen aufgerufen werden, ohne eine Instanz zu erstellen.

Lösung:

  1. Instanz erstellen: Erstellen Sie eine Instanz der Program-Klasse und rufen Sie GetRandomBits() von dieser Instanz aus auf.
<code class="language-csharp">// 创建 Program 实例
Program p = new Program();

// 从实例访问非静态方法
Population[i].bits = p.GetRandomBits();</code>
Nach dem Login kopieren
  1. GetRandomBits() statisch machen: Ändern Sie die static-Methode in eine statische Methode, indem Sie das Schlüsselwort GetRandomBits() vor der Methodendeklaration hinzufügen.
<code class="language-csharp">public static string GetRandomBits()
{
    // 在此处实现方法逻辑...
}</code>
Nach dem Login kopieren

Welche Methode Sie wählen, hängt von Ihrem Programmdesign und dem Zweck der GetRandomBits() Methode ab. Wenn GetRandomBits() auf andere nicht statische Mitglieder der Klasse zugreifen muss, muss es die erste Methode (Instanz erstellen) verwenden. Wenn GetRandomBits() nicht auf nicht statische Mitglieder der Klasse zugreifen muss, ist der zweite Ansatz (statisches Erstellen) sauberer. Denken Sie daran, dass die übermäßige Verwendung statischer Methoden dazu führen kann, dass Ihr Code weniger testbar und wartbar ist.

Das obige ist der detaillierte Inhalt vonWarum wird „Eine Objektreferenz ist erforderlich' angezeigt, wenn in C# eine nichtstatische Methode aus einer statischen Methode aufgerufen wird?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage