IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[2.0] NullReferenceException et Dictionary


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut [2.0] NullReferenceException et Dictionary
    Salut,

    J'obtiens une NullReferenceException lorsque je teste l'existence d'une clé dans un Dictionary. Je teste l'existence de la clé avant l'ajout éventuel de celle-ci.
    Je ne comprends pas pourquoi l'ajout fonctionne, mais pas la condition. L'ajout d'une paire clé/valeur fonctionne dans la mesure où justement il n'y a pas de clé en double, d'où le test sur l'existence de la clé. Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Function listerRetourEnvoi(ByVal fichier As String) As Dictionary(Of String, Boolean)
    	Dim listeRetour As Dictionary(Of String, Boolean) = New Dictionary(Of String, Boolean)
    	Dim fluxRetour As StreamReader = New StreamReader(fichier)
     
    	Do While fluxRetour.ReadLine IsNot Nothing
    		If Not listeRetour.ContainsKey(fluxRetour.ReadLine.Substring(0, fluxRetour.ReadLine.IndexOf(";"))) Then
    			listeRetour.Add( _
    			 fluxRetour.ReadLine.Substring(0, fluxRetour.ReadLine.IndexOf(";")), _
    			 IIf(fluxRetour.ReadLine.Substring(fluxRetour.ReadLine.IndexOf(";")) = "NOK", False, True) _
    			)
    		End If
    	Loop
     
    	Return listeRetour
    End Function
    Ceci me retourne une NullReferenceException :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeRetour.ContainsKey(fluxRetour.ReadLine.Substring(0, fluxRetour.ReadLine.IndexOf(";")))
    Voyez-vous ce qui cloche?

    Merci par avance.

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Je pense que fluxRetour.ReadLine vaut Nothing : dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listeRetour.ContainsKey(fluxRetour.ReadLine.Substring(0, fluxRetour.ReadLine.IndexOf(";")))
    tu fais deux appels à ReadLine. Tu lis donc une ligne puis la suivante, je ne crois pas que ce soit ce que tu veuilles faire... En fin de fichier, ReadLine vaut Nothing.

  3. #3
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Bien joué, un grand merci.

    Je n'étais pas du tout sur ça mais plutôt sur le Dictionary.

    Encore merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.1] Comment scruter un Dictionary ?
    Par fregolo52 dans le forum Framework .NET
    Réponses: 8
    Dernier message: 07/08/2006, 20h24
  2. Object Dictionary
    Par bor1s dans le forum ASP
    Réponses: 5
    Dernier message: 05/05/2006, 15h31
  3. [VB.NET] System.NullReferenceException
    Par LeGrosWinnie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 29/12/2005, 13h31
  4. [O9i] Temp & dictionary
    Par Fabien Celaia dans le forum Oracle
    Réponses: 10
    Dernier message: 17/11/2005, 14h38
  5. Utilisation Dictionary
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 18/10/2004, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo