C#三个交互类

时间:2016-01-24 22:17:17

标签: c# class

我基本上是个初学者,所以请耐心等待。我必须创建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方法,但是添加给我的内容然后打印这些信息会是什么样子?

1 个答案:

答案 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方法。