Maison > développement back-end > C++ > Pourquoi une méthode statique ne peut-elle pas accès aux membres non statiques en C #?

Pourquoi une méthode statique ne peut-elle pas accès aux membres non statiques en C #?

Susan Sarandon
Libérer: 2025-02-02 17:46:09
original
298 Les gens l'ont consulté

C # La méthode statique ne peut pas accéder aux erreurs et solutions des membres non statiques

Why Can't a Static Method Access Non-Static Members in C#?

Erreur: l'objet est référencé

Le fragment de code suivant démontre ce problème:

La cause du problème
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        ...

        private static void SumData(object state)
        {
            ...
            setTextboxText(result); // 错误:非静态字段、方法或属性
        }
    }
}
Copier après la connexion

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éthode

comme statique:

  1. setTextboxText Cependant, si la méthode <然> doit accéder aux variables d'instance, elle ne peut pas être définie sur statique.
<<> Appelez
public static void setTextboxText(int result)
Copier après la connexion
:

setTextboxText

  1. Dans le constructeur <>, définissez à l'instance actuelle: Form1. setTextboxText
  2. <调> Créer une instance
dans la méthode d'appel:
class Form1
{
    public static Form1 Instance;   // 单例

    ...

    private static void SumData(object state)
    {
        ...
        Instance.setTextboxText(result);
    }
}
Copier après la connexion

Form1 Instance Instance = this; Si l'instance <实> existe déjà, cette méthode peut ne pas être applicable.

  1. <调> La méthode d'appel est définie sur la méthode d'instance non statique (appartient à Form1):
private static void SumData(object state)
{
    ...
    Form1 frm1 = new Form1();
    frm1.setTextboxText(result);
}
Copier après la connexion

Il s'agit généralement de la meilleure solution car elle maintient l'encapsulation et la maintenance du code. Form1

Pour plus d'informations, veuillez vous référer au document MSDN.

    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!

    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
    Derniers articles par auteur
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal