我有一个简单的C#控制台应用程序。
它有三个类。
public class Song
{
public string SongName {get; set;}
public int TrackNumber { get; set; }
}
public class Album
{
public string AlbumName { get; set; }
public List<Song> Songs { get; set; }
public Artist AlbumArtist { get; set; }
}
public class Artist
{
public string Name { get; set; }
}
这是主要功能
static void Main(string[] args)
{
Album SFG = new Album();
SFG.AlbumName = "Searching For Gold";
Song Intro = new Song();
Intro.SongName = "Intro";
Intro.TrackNumber = 1;
SFG.Songs.Add(Intro);
}
当代码获取到最后一行时,它会抛出一个空引用异常,并且消息对象引用未设置为对象的实例。
我一直在寻找,但我不确定如何谷歌这回来的结果不是我想要的。
我认为可能存在一条我可能不理解或不了解的语言的基本规则。但我找不到合适的文章来解释发生了什么或者它叫什么的概念
谢谢
答案 0 :(得分:2)
它会抛出一个带有消息的空引用异常:
未将对象引用设置为对象的实例
那是因为您的Songs
集合为null
,并且以下行存在错误。
SFG.Songs.Add(Intro);
您已在类中声明了它,但尚未在运行时将其声明。
试试这个:
public class Album
{
public string AlbumName { get; set; }
public List<Song> Songs { get; set; } = new List<Song>; // instantiate via new
public Artist AlbumArtist { get; set; }
}
答案 1 :(得分:2)
确保在使用前初始化Songs
。
public class Album
{
public string AlbumName { get; set; }
public List<Song> Songs { get; set; }
public Artist AlbumArtist { get; set; }
public Album(){
Songs = new List<Song>();
}
}