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
Susan SarandonOriginal
2025-02-02 17:46:09300Durchsuche

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
<code class="language-csharp">namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        ...

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

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
<code class="language-csharp">public static void setTextboxText(int result)</code>
:

setTextboxText auf

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

    ...

    private static void SumData(object state)
    {
        ...
        Instance.setTextboxText(result);
    }
}</code>

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):
<code class="language-csharp">private static void SumData(object state)
{
    ...
    Form1 frm1 = new Form1();
    frm1.setTextboxText(result);
}</code>

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!

    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