LinkedList无法正常工作,收到错误

时间:2014-04-03 16:44:40

标签: c# linked-list

我试图在字典中创建一个链表,但我得到以下两个错误:

  

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 );
    }
}

2 个答案:

答案 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.Co‌​llections.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>类型,因为它需要该类型(如第一个原因所述)。