2010-07-15 6 views
4

J'ai une classe:Champ initialiseur ne peut pas faire référence à champ non statique

public class LED 
{ 
    public System.Windows.Forms.Label lbl; 

    public LED(System.Windows.Forms.Label lblLED) 
    { 
     lbl = lblLED; 
    } 

    public void blink(System.Drawing.Color color, int pattern) 
    { 
     // ... 
    } 
} 

et je crée une instance de celui-ci dans un haut de gamme:

public LED LED1 = new LED(lblLED1); // (1) 

    public void update_LED(Label lbl, double i) 
    { 
     //LED LED1 = new LED(lblLED1); // (2) 
    } 

dans le cas (2) il me permet de passer lblLED1 à l'intérieur du constructeur, mais dans le cas (1), il dit:

Un initialiseur sur le terrain ne peut pas référencer le champ non statique, méthode ou propriété « lblLED1 »

Quel est le problème?

+1

Ce n'est pas parce que c'est un composant graphique. Le message d'erreur vous donne la raison. Je ne sais pas pourquoi cela n'est pas autorisé, probablement à cause de l'ordre dans lequel les différentes parties de la classe sont initialisées. – Blorgbeard

Répondre

3

http://msdn.microsoft.com/en-us/library/5724t6za%28VS.80%29.aspx

vous ne pouvez pas les références d'utilisation aux champs pour initialiser les champs dans la même classe en dehors d'une méthode, peut-être parce que l'ordre dans lequel les variables de référence sont initialisés est pas garantie.

+0

+1 pour avoir cité "... ** en dehors d'une méthode" ** –

Questions connexes