C# 三个交互类
本文关键字:三个 交互 | 更新日期: 2023-09-27 18:31:45
我基本上是一个初学者,所以请耐心等待。我必须创建 3 个类,其中一个是主要的,另外两个是图书馆类和书籍类。
我已经得到了这个代码,无法更改它。
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 方法,但是添加提供给我的内容然后打印该信息会是什么样子?
你快到了。在使用 Book 对象之前,必须使用 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
类应该具有属性而不是字段。字段只能用于存储私人内容。属性背后的想法是隐藏实现细节并禁止从外部直接访问类字段。属性通常是用于访问字段的一对方法:getter 方法和 setter 方法。例如,在Java中,这些只是两种常规方法。C# 有一个特殊的属性构造,其中包含这两种方法,并允许访问字段等属性:
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
请注意,C# 标识符区分大小写。通常对属性名称、类型名称(类名)和方法名使用 Pascal 大小写(第一个字母大写),但对字段、方法参数和局部变量使用 Camel 大小写(第一个字母小写)。一些程序员喜欢在字段名称中引入带有下划线的字段名称(例如 _name
)。
C# 具有自动实现的属性,这些属性可创建隐藏的支持字段并自动执行"管道"。你可以简单地写:
public string Name { get; set; }
假设您在 Book
类中使用了属性,您还可以使用对象初始值设定项来初始化 book 对象
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
方法。