Erreur et solution pour C # La méthode statique ne peut pas accéder aux membres non statiques
error: référence d'objet requis
]L'extrait de code suivant démontre ce problème:
namespace WindowsApplication1
{
public partial class Form1 : Form
{
...
private static void SumData(object state)
{
...
setTextboxText(result); // 错误:非静态字段、方法或属性
}
}
}
Cause du problème
] Le message d'erreur indique que la méthode statique sumdata
tente d'appeler un membre non statique setTextBoxText
. Une méthode statique ne peut accéder qu'à des membres statiques, tandis que l'accès à des membres non statiques nécessite une référence à l'objet de la classe à laquelle il appartient.
solutions
Il existe plusieurs façons de corriger cette erreur:
setTextBoxText
sur statique: public static void setTextboxText(int result)
]
Cependant, si la méthode setTextBoxText
nécessite un accès à la variable d'instance, il ne peut pas être défini sur statique.
Call de singleton statique
setTextBoxText :
]
class Form1
{
public static Form1 Instance; // 单例
...
private static void SumData(object state)
{
...
Instance.setTextboxText(result);
}
}
Dans le constructeur de form1 ,
instance doit être défini sur l'instance actuelle:
instance = this; .
dans la méthode d'appel:
private static void SumData(object state)
{
...
Form1 frm1 = new Form1();
frm1.setTextboxText(result);
}
Si l'instance de form1 existe déjà, cette méthode peut ne pas fonctionner.
sumdata
en tant que méthode d'instance non statique (appartient à form1
): private void SumData(object state)
{
...
setTextboxText(result);
}
C'est généralement la meilleure solution car elle maintient l'encapsulation et la maintenabilité du code.
Pour plus d'informations, veuillez vous référer à la documentation MSDN.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3