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 方法,但是添加提供给我的内容然后打印该信息会是什么样子?

C# 三个交互类

你快到了。在使用 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 方法。