Heim > Backend-Entwicklung > C++ > Warum kann eine statische Methode in C#keine statischen Mitglieder zugreifen?

Warum kann eine statische Methode in C#keine statischen Mitglieder zugreifen?

Susan Sarandon
Freigeben: 2025-02-02 17:46:09
Original
298 Leute haben es durchsucht

c# statische Methode kann nicht auf die Fehler und Lösungen von nicht -statischen Mitgliedern zugreifen

Why Can't a Static Method Access Non-Static Members in C#?

Fehler: Das Objekt wird auf

verwiesen Das folgende Codefragment zeigt dieses Problem:

Die Ursache des Problems
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        ...

        private static void SumData(object state)
        {
            ...
            setTextboxText(result); // 错误:非静态字段、方法或属性
        }
    }
}
Nach dem Login kopieren

Fehlerinformationen zeigen, dass statische Methoden versuchen, nicht -statische Mitglieder

aufzurufen. Statische Methoden können nur auf statische Mitglieder zugreifen, und nicht statische Mitglieder benötigen einen Hinweis auf Objekte, zu denen gehören.

SumData <决> Lösung setTextboxText

Es gibt viele Möglichkeiten, diesen Fehler zu lösen:

<<> Stellen Sie die

-Methode als statisch fest:

  1. setTextboxText Wenn die <然> -Methode jedoch auf Instanzvariablen zugreifen muss, kann sie nicht auf statisch eingestellt werden.
<<> rufen Sie
public static void setTextboxText(int result)
Nach dem Login kopieren
:

setTextboxText auf

  1. im <> Konstruktor, setzen Sie auf die aktuelle Instanz: Form1. setTextboxText
  2. <调> Erstellen Sie eine
-Instanz in der Aufrufmethode:
class Form1
{
    public static Form1 Instance;   // 单例

    ...

    private static void SumData(object state)
    {
        ...
        Instance.setTextboxText(result);
    }
}
Nach dem Login kopieren

Form1 Instance Instance = this; Wenn die <实> -Instanz bereits vorhanden ist, ist diese Methode möglicherweise nicht anwendbar.

  1. <调> Die Aufrufmethode wird auf die nicht -statische Instanzmethode eingestellt (gehört zu Form1):
private static void SumData(object state)
{
    ...
    Form1 frm1 = new Form1();
    frm1.setTextboxText(result);
}
Nach dem Login kopieren

Dies ist normalerweise die beste Lösung, da es die Einkapselung und Wartung des Codes beibehält. Form1

Weitere Informationen finden Sie im MSDN -Dokument.

    Das obige ist der detaillierte Inhalt vonWarum kann eine statische Methode in C#keine statischen Mitglieder zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    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