0

J'ai une application pour travailler avec des fichiers. Il doit travailler avec les fichiers un caractère à la fois. J'utilise un ArrayList pour stocker les données. Voici le code qui est à l'origine du problème:Exception de référence null inexplicable dans VB.NET

Dim fileData As ArrayList = Nothing 
Dim temp As Char = Nothing 
While Not EOF(open_file_number) 
    Input(open_file_number, temp) 
    fileData.Add(temp) 
End While 

La ligne de code qui est de renvoyer l'exception référence nulle est où je (tentative de) affecter la valeur de temp à un nouvel élément dans le fileData ArrayList. Quelqu'un a une idée de ce qui se passe ici? Merci

+2

* Tout * est explicable. ;) – Mehrdad

+0

Je ne pense pas que 'Dim FileData comme New ArrayList = Nothing' est valide ... est-ce que vous le déclarez 'New' ou le définissez' Nothing'? Cela fera une différence – mellamokb

+0

@Mehrdad Eh bien, quelqu'un at-il une explication pour cela? Parce que je ne sais pas. –

Répondre

1

Eh bien, fileData est réglé sur Nothing, donc bien sûr, il se déclenche un NullReferenceException lorsque vous appelez .Add dessus. Essayez de régler à une nouvelle instance:

Dim fileData As New ArrayList 
+0

OK, je le vois maintenant '* sent la main dans le front *' Je pensais que la référence nulle était sur temp –

+0

@Nate: les références nulles ne se produisent pas lors du passage des arguments. Il est parfaitement valide de passer un 'Nothing' pour un paramètre. Une exception de référence null ne se produira que si vous tentez d'accéder à une propriété ou si vous appelez une méthode sur un objet nul. – mellamokb

0

Ce que vous devez faire est de changer la ligne suivante:

Dim temp As Char = Nothing 

Pour:

Dim temp as Char = '' 

Il est une différence. J'ai expérimenté la même chose avec des variables String et j'ai eu le même problème. Entraîne un pointeur NULL lorsque vous tentez d'affecter une valeur à 's'.

Dim s as string = String.empty 

Ne le fait pas.

Questions connexes