C# C向列表中添加值

C# C向列表中添加值,c#,C#,我有一个名为借阅者列表的列表,应该包含借阅者的姓名和他们借来的书的标题 当一个借书人从借书人队列中退出,一本书从BookStack中弹出时,就会发生这种情况 我想做的是,像下面这样,将来自BorrowerQueue和Bookstack的值添加到BorrowerList中。然而,我并不完全理解它是如何做到的。非常感谢你的帮助 var reader = BorrowerQueue.Dequeue(); //person gets dequeued from line var books = Bo

我有一个名为借阅者列表的列表,应该包含借阅者的姓名和他们借来的书的标题

当一个借书人从借书人队列中退出,一本书从BookStack中弹出时,就会发生这种情况

我想做的是,像下面这样,将来自BorrowerQueue和Bookstack的值添加到BorrowerList中。然而,我并不完全理解它是如何做到的。非常感谢你的帮助

 var reader = BorrowerQueue.Dequeue(); //person gets dequeued from line
 var books = BookStack.Pop(); // book gets popped from stack and associated to reader

 BorrowerList.Add(new Borrower(reader.ToString()) {}); // what to do here?
目标:

{[name1, Book], [name2, Book] .... }
这是我为借款人开设的课程:


将属性getter和setter简化为标准属性。C编译器将自动转换它们的get/set函数。您的类应该如下所示:

class Borrower
{
    public string Name { get; }
    public Book Book { get; set; }

    public Borrower(string n)
    {
        //Since C# 6.0, read-only properties can be set in the constructor
        this.Name = n; 
    }
}
现在,您只需在出列时设置Book属性:

var reader = BorrowerQueue.Dequeue(); //person gets dequeued from line
var books = BookStack.Pop(); // book gets popped from stack and associated to reader
BorrowerList.Add(new Borrower(reader.ToString()) { Book = book });

向借阅者构造函数添加第二个Book参数,并通过该参数传递Book。尽管对于这种情况,拥有字典可能更适合您尝试执行的操作。除了其他内容外,现在是学习C中的属性和C命名约定的好时机。目前你的代码看起来更像Java而不是C。我知道的没错。我已经两年没有在课堂上使用C了。一年前,我不得不使用JavaThis,这看起来不错,但我想说的是,这个名称也应该是一个自动属性。从C 6.0开始,可以编写字符串名{get;}并从构造函数中初始化它。同意,将名称设为{get;private set;}将使代码总体上更干净。更不用说,当前构造函数设置的名称没有setter,因此无法编译。@AluanHaddad我指的是dotNET的当前代码,其中的名称不是auto属性,因此这样做不起作用。我在{Book=books}上有一个错误部件错误1无法将类型“object”隐式转换为“ConsoleApplication3.Book”。存在显式转换是否缺少强制转换?@Kevin什么类型是BorrowerQueue和BookStack?您是否使用非通用堆栈和队列?
class Borrower
{
    public string Name { get; }
    public Book Book { get; set; }

    public Borrower(string n)
    {
        //Since C# 6.0, read-only properties can be set in the constructor
        this.Name = n; 
    }
}
var reader = BorrowerQueue.Dequeue(); //person gets dequeued from line
var books = BookStack.Pop(); // book gets popped from stack and associated to reader
BorrowerList.Add(new Borrower(reader.ToString()) { Book = book });