Maison >développement back-end >C++ >Pourquoi une méthode statique ne peut-elle pas accès aux membres non statiques en C #?
C # La méthode statique ne peut pas accéder aux erreurs et solutions des membres non statiques
Erreur: l'objet est référencé
Le fragment de code suivant démontre ce problème:
La cause du problème
<code class="language-csharp">namespace WindowsApplication1 { public partial class Form1 : Form { ... private static void SumData(object state) { ... setTextboxText(result); // 错误:非静态字段、方法或属性 } } }</code>
Les informations d'erreur montrent que les méthodes statiques essaient d'appeler les membres non statiques
. Les méthodes statiques ne peuvent accéder qu'à des membres statiques, et les membres non statiques ont besoin d'une référence aux objets qui appartiennent.
SumData
Solution setTextboxText
Il existe de nombreuses façons de résoudre cette erreur:
Définissez la méthodecomme statique:
setTextboxText
Cependant, si la méthode doit accéder aux variables d'instance, elle ne peut pas être définie sur statique.
<code class="language-csharp">public static void setTextboxText(int result)</code>:
setTextboxText
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;
Si l'instance existe déjà, cette méthode peut ne pas être applicable.
Form1
): <code class="language-csharp">private static void SumData(object state) { ... Form1 frm1 = new Form1(); frm1.setTextboxText(result); }</code>
Il s'agit généralement de la meilleure solution car elle maintient l'encapsulation et la maintenance du code. Form1
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!