Maison > développement back-end > C++ > Pourquoi 'CS0120: une référence d'objet est-elle requise ...' se produit-il lors de l'appel d'une méthode non statique à partir d'une méthode statique?

Pourquoi 'CS0120: une référence d'objet est-elle requise ...' se produit-il lors de l'appel d'une méthode non statique à partir d'une méthode statique?

DDD
Libérer: 2025-02-02 17:51:11
original
585 Les gens l'ont consulté

Why Does

Erreur: "CS0120: Une référence d'objet est requise pour le champ, la méthode ou la propriété non statique 'foo'"

Scénario:

Considérons le code suivant:

private static void SumData(object state)
{
    // Calling a non-static member from a static method
    setTextboxText(result);
}
Copier après la connexion

Explication:

L'erreur "CS0120" se produit lorsque vous essayez d'accéder à un membre non statique ( champ, méthode ou propriété) à partir d'un contexte statique. Dans ce cas, la méthode SetTextBoxText est un membre non statique de la classe FORM1, et il ne peut pas être accessible à partir de la méthode statique SumData.

Solutions possibles:

  • Rendre le membre non statique statique:
static void setTextboxText(int result)
{
    // Implementation details
}
Copier après la connexion
  • Utilisez un singleton statique de forme1:
class Form1
{
    public static Form1 It;

    public Form1()
    {
        It = this;
    }

    private static void SumData(object state)
    {
        Form1.It.setTextboxText(result);
    }
}
Copier après la connexion
  • passez une instance de Form1 à la méthode d'appel:
private static void SumData(Form1 form, object state)
{
    form.setTextboxText(result);
}
Copier après la connexion
  • Faire la méthode d'appel non Statique:
private void SumData(object state)
{
    setTextboxText(result);
}
Copier après la connexion

Informations supplémentaires:

  • Les membres statiques ne peuvent accéder qu'à d'autres membres statiques.
  • Les membres non statiques peuvent accéder à des membres statiques et non statiques.
  • Si une instance de la classe n'est pas disponible pendant l'appel à un membre non statique, vous pouvez créer une nouvelle instance ou utiliser des singletons statiques pour accéder au membre non statique.
  • Reportez-vous à MSDN pour plus d'informations sur cette erreur.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal