我基本上是个初学者,所以请耐心等待。我必须创建3个类,其中一个是main,另外两个是Library类和Book类。
我已经获得了此代码,无法改变它。
public static void Main (string[] args)
{
Library lib = new Library ();
lib.AddBook ("C# programming", "Gesick", 4);
lib.AddBook ("java programming", "Roth", 2);
lib.AddBook ("C++ programming", "Franklin", 1);
lib.AddBook ("unity programming", "Preston", 3);
lib.AddBook ("graphics & multimedia", "Chastine", 5);
}
这是我正在编写的代码。
class Library
{
List<string> library = new List<string>();
public string AddBook(string Name, string Author, int Id)
{
Book.name = Name;
Book.author = Author;
Book.id = Id;
}
}
class Book
{
public string name;
public string author;
public int id;
}
这显然不完整,我确实想尝试自己完成大部分内容。我的第一个问题是我是否走在正确的轨道上。我现在的下一个问题是如何打印给我的书籍?我还没有制作AddBook方法,但是添加给我的内容然后打印这些信息会是什么样子?
答案 0 :(得分:2)
你快到了。在使用之前,您必须使用new
关键字创建图书对象。将类视为对象模板。它不是对象本身。您的图书馆列表必须是Book
类型才能接受图书条目。
class Library
{
List<Book> library = new List<Book>();
public void AddBook(string Name, string Author, int Id)
{
Book book = new Book();
book.name = Name;
book.author = Author;
book.id = Id;
library.Add(book);
}
}
正如@Ben指出的那样,如果方法是字符串类型,则必须从AddBook
方法返回一个字符串。由于这似乎没有任何意义,我将其类型更改为void
(意思是,它不返回值)。
Book
课程也应该properties而不是fields。字段只应用于存储私事。属性背后的想法是隐藏实现细节并禁止从外部直接访问类字段。属性通常是用于访问字段的一对方法:getter方法和setter方法。例如,在Java中,这些只是两种常规方法。 C#有一个特殊的属性构造,包含这两种方法,并允许访问字段等属性:
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
请注意,C#标识符区分大小写。对于字段,方法参数和局部变量,通常使用Pascal case(首字母大写)来表示属性名称,类型名称(类名称)和方法名称,但使用驼峰大小写(首字母小写)。一些程序员喜欢引入带下划线的字段名称(例如_name
)。
C#有auto-implemented properties创建一个隐藏的支持字段并执行&#34; plumbing&#34;自动。你可以简单地写一下:
public string Name { get; set; }
假设您在Book
课程中使用了属性,您还可以使用object initializers来初始化图书对象
public void AddBook(string name, string author, int id)
{
Book book = new Book{
Name = name,
Author = author,
Id = id
};
library.Add(book);
}
关于第二个问题:如何打印书籍?
您可以使用foreach循环
循环浏览书籍列表foreach (Book b in library) {
// TODO: Print the book "b"
}
如果您的应用程序是控制台应用程序,则可以使用Console.WriteLine
方法。