C# 将新对象添加到列表中
我正试图学习oop,但却在某个地方呆了几个小时。 这是我的主要课程: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
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");
}