Heim >Backend-Entwicklung >C++ >Warum kann eine statische Methode in C#keine statischen Mitglieder zugreifen?
c# statische Methode kann nicht auf die Fehler und Lösungen von nicht -statischen Mitgliedern zugreifen
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:
setTextboxText
Wenn die -Methode jedoch auf Instanzvariablen zugreifen muss, kann sie nicht auf statisch eingestellt werden.
<code class="language-csharp">public static void setTextboxText(int result)</code>:
setTextboxText
auf
Form1
. setTextboxText
<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.
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
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!