2012-01-30 2 views
1

J'ai rencontré quelque chose de bizarre, et je ne suis pas sûr que ce soit un bug dans Visual Studio, ou si mon ignorance me joue des tours.Bug de Visual Studio?

J'ai deux variables de classe privées:

class MyClass 
{ 
    private MyList<A> aList; 
    private MyList<B> bList; 
    [...] 

Et quelque part le long du code, j'utilise ces variables pour la première fois.

public void MyMethod() 
    { 
     object[] generatorOutput = Generator.Generate(args); 
     aList = (MyList<A>)generatorOutput[0]; 
     bList = (MyList<B>)generatorOutput[1]; 
     [...] 

Pourtant, Visual Studio me dit que bList est erroné:

Cannot use local variable 'bList' before it is declared. 
The declaration of the local variable hides the Field 'MyNameSpace.MyClass.bList'. 

Je ne comprends pas vraiment ce que signifie Visual Studio. Je ne pas veut que bList soit local, et c'est pas censé cacher quoi que ce soit.

Si ça aide: bList était à l'origine appelé cList et était un MyList<C> avant que je décide, qu'un MyList<B> était plus que suffisant. Le message d'erreur est apparu seulement après avoir renommé la variable et changé son type. Le generatorOutput est toujours moulé dans le bon type, d'ailleurs.

Alors, est-ce un bug, ou est-ce que je manque quelque chose d'évident? Je l'ai déjà essayé de compiler le code, la réécriture de la ligne et même redémarrer Visual Studio sans succès ...

+2

peut vous montrer votre code réel pour ' MyMethod'? –

+6

Comme il est dit dans The Pragmatic Programmer (citée en gros): "Ne supposez jamais que la faute est dans le jeu d'outils que vous utilisez jusqu'à ce que vous ayez écarté toutes les autres raisons." – JasCav

+0

L'erreur pointe-t-elle vraiment vers les lignes de MyMethod()? – okrumnow

Répondre

6

Je suppose que votre MyMethod continue comme ceci:

public void MyMethod() 
{ 
    object[] generatorOutput = Generator.Generate(args); 
    aList = (MyList<A>)generatorOutput[0]; 
    bList = (MyList<B>)generatorOutput[1]; 

    // ... 

    var bList = new MyList<B>(); // <--- 
+0

Merci pour votre réponse, je savais que j'avais manqué quelque chose d'évident. J'ai en effet eu une liste locale plus loin en dessous de laquelle j'ai complètement oublié, quand j'ai rebaptisé cList to bList. – Nolonar

+0

@Nolonar: Cliquer sur la deuxième erreur vous aurait montré ce problème immédiatement. Y at-il une raison pour laquelle vous n'avez pas étudié toutes les erreurs de compilation? –

+0

Je n'ai trouvé aucune "deuxième erreur", Visual Studio n'a mis en évidence que la première erreur et le rapport d'erreurs ne comportait qu'une seule entrée. C'est particulièrement frustrant étant donné que la deuxième erreur était juste sur la ligne suivante (C'est stupide de mon côté, je sais ...) – Nolonar

Questions connexes