I\'m experiencing \"null reference exception\" when I\'m attempting to return a value from a structure.
here is the code:
AssetItem item = new AssetItem(
And the end of the file, ReadLine()
returns null - and you then call .Trim()
on it without checking (in the scenario where the item isn't there and you read the file all the way through) - hence you need to add a null-check (note also I've moved the ReadLine
so it happens consistently):
using(StreamReader reader = new StreamReader(modifiedFile))
{
string line;
while((line = reader.ReadLine()) != null && line.Trim() != "") {
...
}
}
Note that the above code (based on yours) will end on the first empty line; personally I'd probably skip empty lines:
using(StreamReader reader = new StreamReader(modifiedFile))
{
string line;
while((line = reader.ReadLine()) != null) {
if(line.Trim() == "") continue;
...
}
}
On a side note, why create a new instance then re-assign to it without using it for any purpose..
AssetItem item = new AssetItem();
item = initModified();
Could become
AssetItem item = initModified();
One problem that I can find in your code is that you don't need the following line:
reader.Close();
using
automatically does this for you.
Furthermore, your looping condition should check EndOfStream
instead of trimming the line.
i.e., Modifying your code to something like this:
using(StreamReader reader = new StreamReader(modifiedFile))
{
while(!reader.EndOfStream)
{
string line = reader.ReadLine();
string[] split = line.Split(',');
if(split[1]==barcode)
{
found = true;
break;
}
}
}