我试图在字典中创建一个链表,但我得到以下两个错误:
error1:'System.Collections.Generic.LinkedList.AddFirst(System.Co llections.Generic.LinkedListNode)'的最佳重载方法匹配有一些无效的参数
error2:参数1:无法从'string'转换为 'System.Collections.Generic.LinkedListNode',
显示错误的代码是[UPDATED]:
this.albumslist.AddFirst( album );
Artist类的相关部分是[更新]:
class Artist
{
private string artistname;
private string members;
private string albums;
private LinkedList<Albums> albumslist;
public Artist(string artistname, string members, string album)
{
this.artistname = artistname;
this.members = members;
this.albumslist = new LinkedList<Albums>();
this.albumslist.AddFirst( album );
}
}
答案 0 :(得分:1)
我不确定我理解你为什么感到困惑。 Artist的构造函数将LinkedList作为第三个参数。
public Artist(string artistname, string members, LinkedList<Albums> albumslist)
在你的代码中,你给它一个字符串作为第三个参数。
new Artist(txtArtistName.Text, txtMembers.Text,txtAlbum.Text)
您需要为LinkedList提供它,更改Artist的构造函数以获取字符串,或者添加一个带字符串的其他构造函数。
public Artist( string artistName, string members, string album )
{
this.artistname = artistname;
this.members = members;
this.albumslist = new LinkedList<Albums>();
this.albumslist.AddFirst( new Album() { Name = album } );
}
我有点困惑的是为什么LinkedList是必要的而不是简单的List,但我假设你有充分的理由。
答案 1 :(得分:1)
错误说明了一切。类Artist
只有一个构造函数具有参数
string, string, LinkedList<Albums>
您正尝试使用参数调用此构造函数:
txtArtistName.Text, txtMembers.Text,txtAlbum.Text
即,
string, string, string
修改强>
错误1:
The best overloaded method match for 'System.Collections.Generic.LinkedList<ArtistsLibrary.Albums>.AddFirst(System.Collections.Generic.LinkedListNode<ArtistsLibrary.Albums>)' has some invalid argument--
原因:您将字符串值传递给AddFirst
,因为它接收LinkedListNode<ArtistsLibrary.Albums
作为参数。
错误2:
Argument 1: cannot convert from 'string' to 'System.Collections.Generic.LinkedListNode<ArtistsLibrary.Albums>'
原因:它说,无法将字符串转换为LinkedListNode<ArtistsLibrary.Albums>
类型,因为它需要该类型(如第一个原因所述)。