2009-05-26 9 views
0

J'ai une classe « Adresse » qui a le contrôle suivant:« index était en dehors des limites du tableau » lors de la vérification variable non-tableau

if(thisAddress == null) 
    thisAddress = new Address(); 

Lorsque le code est exécuté, je reçois « index était en dehors les limites du tableau "sur la première ligne. Si je supprime l'instruction IF, j'obtiens l'erreur sur la deuxième ligne.

La classe vient de LINQ to SQL, mais je l'avons étendu. Cela a fonctionné avant, je ne sais pas pourquoi cela a commencé tout à coup. thisAddress est une variable privée dans un UserControl.

Des idées?

+0

thisAddress est une variable de quel type? –

Répondre

0

A découvert. Apparemment, j'ai omis une information cruciale. Le code est à l'intérieur de la section get {} pour une propriété de contrôle. L'erreur était une ligne différente dans le code (où j'utilisais split()), mais le débogueur pointait sur la première ligne de l'instruction get {}.

1

Le code est en synchronisation avec le binaire.
Essayez recompiler l'ensemble qui contient le usercontrol.

Est-ce que quelque chose a changé dans la base de données que vous pensez pouvoir rompre le mappage LINQ to SQL?

+0

Une déduction intelligente! – mquander

0

Généralement, les instructions linq sont exécutées paresseusement ou lorsqu'elles sont utilisées plutôt que lorsque vous avez écrit le lien. Par conséquent, il est tout à fait possible que le code s'exécutant derrière l'instruction If soit réellement là où se trouve la faute. Si tel est le cas, vous pouvez essayer d'entrer dans l'instruction (il peut s'agir d'une vérification d'égalité sur la classe thisAddress) et le débogueur doit vous montrer le linq en cours d'exécution.

Une alternative et ce que j'utilise principalement, est de mettre le débogueur à casser quand des exceptions sont levées plutôt que lorsqu'elles ne sont pas gérées, c'est un très bon moyen de dépister ce genre de problème. (Debugger/Exceptions coché quand lancé en VS).

espérons que cela aide

Questions connexes