C# throw object reference not set to an instance of an object
Hello, I have created a small project in the .Net 5 console application in VS Code.
I want to work with objects and a list of objects. I have created a class as below:
using System;
using System.Collections.Generic;
using System.Linq;
namespace StudentManager
{
class Student
{
public int Id { get; set; }
public string Fullname { get; set; }
public string Email { get; set; }
public Student Create(int id, string fullname, string email){
return new Student(){Id = id, Fullname = fullname, Email = email};
}
}
class Program
{
static void Main(string[] args)
{
List<Student> students = new List<Student>();
if(students != null){
var student = students.FirstOrDefault();
Console.WriteLine(student.Id);
Console.WriteLine(student.Fullname);
Console.WriteLine(student.Email);
}
}
}
}
But run this code with command dotnet run
I got an error: System.NullReferenceException: Object reference not set to an instance of an object.
PS C:\Project\LearnCShape\StudentManager> dotnet run
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at StudentManager.Program.Main(String[] args) in C:\Project\LearnCShape\StudentManager\Program.cs:line 25
PS C:\Project\LearnCShape\StudentManager>
I checked null but the exception still throws when my list object is empty.
Thanks for any suggestions.
- B0
Bhavani Naidu Oct 29 2021
You can see
students
variable not NULL but It's only an empty array. So your condition check null only is not enough.You can check more length of it by using
Any()
method as below:if(students != null && students.Any()){ var student = students.FirstOrDefault(); Console.WriteLine(student.Id); Console.WriteLine(student.Fullname); Console.WriteLine(student.Email); }
And your exception will be resolved.
- M0
Manish Kumar Oct 29 2021
I think
students
variable is an empty list so when you get the top 1 object from that list by usingFirstOrDefault()
command will return NULL. And when an object is null you will not access the properties of that object.To fix this exception you can check the null object before using it:
List<Student> students = new List<Student>(); if(students != null){ var student = students.FirstOrDefault(); if(student != null){ Console.WriteLine(student.Id); Console.WriteLine(student.Fullname); Console.WriteLine(student.Email); } }
It's so simple, I hope it helpful for you.
* Type maximum 2000 characters.
* All comments have to wait approved before display.
* Please polite comment and respect questions and answers of others.