C# 将新对象添加到列表中

C# 将新对象添加到列表中,c#,list,C#,List,我正试图学习oop,但却在某个地方呆了几个小时。 这是我的主要课程: static void Main(string[] args) { Class1 cls = new Class1("",0); cls.kitapAdi= "book name"; cls.sayfaSayisi= 22; bool sonuc = cls.AddBook(cls); } 和对象类(类别1): public类1(字符串ali,int-mehmet) { this.ki

我正试图学习oop,但却在某个地方呆了几个小时。 这是我的主要课程:

static void Main(string[] args)
{
     Class1 cls = new Class1("",0);
     cls.kitapAdi= "book name";
     cls.sayfaSayisi= 22;
     bool sonuc = cls.AddBook(cls);
}
和对象类(类别1):

public类1(字符串ali,int-mehmet)
{
this.kitapAdi=ali;
this.sayfaSayisi=mehmet;
}
列表书籍=新列表();
私人字符串基塔帕迪;
萨法萨伊西私人酒店;
萨法萨伊西公共酒店
{
获取{return sayfaSayisi;}
设置{sayfaSayisi=value;}
}
公共字符串基塔帕迪
{
获取{return kitapAdi;}
设置{kitapAdi=value;}
}
公共图书馆地址簿(1类kitap)
{
尝试
{
books.Add(新类别(kitapAdi=kitap.kitapAdi,sayfaSayisi=kitap.sayfaSayisi));
返回true;
}
捕获(例外)
{
返回false;
}
}

它没有给出任何错误,但什么也没有发生。当我调试时,我看到Class1的AddBook方法获取了正确的数据,但它没有将其添加到books列表中。

问题是,
Class1
包含一个列表,该列表将保留类型为
Class1
的对象。包含自身元素列表的类可能会导致严重的问题。假设您想要一个书籍列表,我更喜欢一个解决方案,其中有一个类
Book
,它包含您想要存储的关于一本书的所有信息。然后您应该创建一个类
BookList
,它将管理书籍。在下面的示例中,有一个类BookList,它在开始时只能添加一本新书。您可以使用其他功能对其进行扩展,如搜索书籍、删除书籍或返回所有书籍的列表。以下是我的例子:

class Book
{
    public string Title { get; set; } // This is an automatic property
    public string Author { get; set; }
}

class BookList
{
    private var books = new List<Book>();

    public bool AddBook (string title, string author)
    {
         books.Add(new Book { Title = title, Author = author });
         return true;
    }
}

static void Main(string[] args)
{
    var bookList = new BookList();
    bookList.AddBook ("Mehmet", "Ali");
}
教材
{
公共字符串标题{get;set;}//这是一个自动属性
公共字符串作者{get;set;}
}
班级书目
{
private var books=新列表();
公共bool AddBook(字符串标题、字符串作者)
{
books.Add(新书{Title=Title,Author=Author});
返回true;
}
}
静态void Main(字符串[]参数)
{
var bookList=新建bookList();
bookList.AddBook(“Mehmet”、“Ali”);
}

然后你会有一个包含一本书的列表。

我认为这里的标签是错误的,C#called中有一个劣质的强类型
list
。你是如何检查该书是否正确添加到列表中的?由于
books
不是公共的,您无法从main-method访问它。您确定插入后正在检查
books
字段吗?调试时您在看什么,以确定它没有添加?在AddBock中运行Add行后,books变量不会用新元素更新?从语义角度看,一件立即没有意义的事情是,您的Add方法(本应添加一本书)接收包含类的实例,如果他只是想创建现有书的副本,该怎么办?对我来说,他的代码看起来不错(错误方面),唯一的结论是“它不工作”是错误的。你的代码更干净,但它并不能真正解决问题(因为OP代码中没有任何问题)。@Sinatr:记住OP是OOP的新手,我认为他做错了什么。Class1包含其自身类型的列表。这不是一个好主意,会导致问题。我理解OP想要一个书单,并给了他一个这样做的想法。好吧,从头开始重新写作是一个有效的策略。虽然如果你真的想帮助一个新手,最好是解释他做错了什么,而不是简单地给他一个漂亮的代码;)@西纳特:说得好。我将更改我的答案以添加更多解释!
class Book
{
    public string Title { get; set; } // This is an automatic property
    public string Author { get; set; }
}

class BookList
{
    private var books = new List<Book>();

    public bool AddBook (string title, string author)
    {
         books.Add(new Book { Title = title, Author = author });
         return true;
    }
}

static void Main(string[] args)
{
    var bookList = new BookList();
    bookList.AddBook ("Mehmet", "Ali");
}