Null Reference exception in C#

后端 未结 3 2005
慢半拍i
慢半拍i 2021-01-25 09:17

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(         


        
相关标签:
3条回答
  • 2021-01-25 09:40

    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;
            ...
        }
    }
    
    0 讨论(0)
  • 2021-01-25 09:47

    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();
    
    0 讨论(0)
  • 2021-01-25 09:58

    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;
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题