繁体   English   中英

C#作业。 我正在寻找正在发生的事情的解释

[英]C# Homework. I am looking for an explanation of what is going on

原谅我问一些人可能认为是愚蠢的问题。 我正在尝试阅读下面的代码并使之有意义。

为什么在主体中使用novel.title。 我知道从哪里获得标题,但为什么要使用novel.title。 另一个是保存用户输入的标题信息的内容。 与作者和水平相同的问题。

 using System;
 using System.Collections.Generic;
 using System.Text;

 namespace assignment6
{
public class Book
{
    protected string title;
    public string Title
    {
        get
        {
            return title;
        }
        set
        {
            title = value;
        }
    }
    protected string author;
    public string Author
    {
        get
        {
            return author;
        }
        set
        {
            author = value;
        }
    }
    public void showBook()
    {
        Console.WriteLine("The Book you entered is " + title + " by " + author);
    }
    public Book(string booktyp1, string booktyp2)
    {
        Console.WriteLine("You will enter data for a " + booktyp1 + " book indicating the " + booktyp2 + " book.");
        Console.WriteLine();
    }
}

public class Fiction : Book
{
    private int level;
    public int Level
    {
        get
        {
            return level;
        }
        set
        {
            level = value;
        }
    }
    public void showFiction()
    {
        showBook();
        Console.WriteLine("Reading level is " + level);
    }
    public Fiction()
        : base("Fiction", "reading level")
    {
    }
}

public class NonFiction : Book
{
    private int pages;
    public int Pages
    {
        get
        {
            return pages;
        }
        set
        {
            pages = value;
        }
    }
    public void showNonFiction()
    {
        showBook();
        Console.WriteLine(pages + " pages");
    }
    public NonFiction()
        : base("NonFiction", "Number of pages")
    {
    }
}

public class assignment6
{
    public static void Main(string[] args)
    {
        char choice;

        Console.Write("Do you want Fiction (F) or Non-Fiction (N)? -->");
        choice = Convert.ToChar(Console.ReadLine().ToUpper());
        switch (choice)
        {
            case 'F':
                {
                    Fiction novel = new Fiction();
                    Console.Write("Enter the book title-->");
                    novel.Title = Console.ReadLine();
                    Console.Write("Enter the book author-->");
                    novel.Author = Console.ReadLine();
                    Console.Write("Enter the reading level-->");
                    novel.Level = Convert.ToInt32(Console.ReadLine());
                    novel.showFiction();
                    break;
                }
            case 'N':
                {
                    NonFiction manual = new NonFiction();
                    Console.Write("Enter the book title-->");
                    manual.Title = Console.ReadLine();
                    Console.Write("Enter the book author-->");
                    manual.Author = Console.ReadLine();
                    Console.Write("Enter the number of pages-->");
                    manual.Pages = Convert.ToInt32(Console.ReadLine());
                    manual.showNonFiction();
                    break;
                }
            default:
                {
                    Console.WriteLine("You made an inappropriate entry -- closing program");
                    break;
                }
        }
    }

}

}

我相信这里的每个人都知道我对编程有多新。 我可以说这是我喜欢的东西,当它起作用时,我讨厌它,并且让我想安静下来。

标题是财产。 它实际上管理称为标题的字段。 title的值用于Show ...方法中。

novelFiction对象。 由于Fiction从Book继承,因此Fiction具有TitleAuthor属性。 所以呢

novel.Title = Console.ReadLine();

正在做的是从控制台读取输入并将其存储在title您的属性novel通过对象Title属性。

您应该看一下《 属性教程》

TitleAuthorLevel是在该块的开头创建的novel对象的属性。 如果不引用对象本身,则不能引用对象的属性。

小说是一个对象,您可以访问对象的属性,例如标题,作者和级别。

直视它:

您有一本小说,并且正在询问用户该小说的标题是什么(novel.Title)。 然后,您问用户:谁是小说的作者(novel.Author)。 最后,您要求提供小说的级别(novel.Level)(我想这就像是小说的阅读难度)。

novel.Title专门指novel对象中的Title (由Fiction novel = new Fiction();创建的对象Fiction novel = new Fiction(); novel.Title假设创建了更多Fiction对象:

Fiction novel1 = new Fiction();
Fiction novel2 = new Fiction();
Fiction novel3 = new Fiction();

您将拥有三个“标题”字段,但是您将如何指出您所指的是哪一个呢? 这就是前缀的含义。 在上面的例子,比如,你可以参考Titlenovel3使用novel3.Title

您的问题尚不清楚,但我您是在询问novel.titlenovel.Title之间的novel.title ,以及为什么一个novel.Title另一个使用。

novel.title是一个可以存储一些数据(在这种情况下为文本字符串)的字段 novel.Title是提供对该字段的访问权限的属性 该属性本身不能存储任何数据,只有字段可以存储。 字段被认为是该类的实现细节的一部分,并且认为使用一个错误的主意将其直接暴露给用户代码。 该属性使程序员可以自由地稍后更改实现,而又不会破坏兼容性-它可以像重命名字段一样简单,也可以更改为完全执行其他操作。

 protected string title;

不能直接访问,但可以通过访问:

public string Title
{
    get
    {
        return title;
    }
    set
    {
        title = value;
    }
}

公告title不同的Title在这里,您可以novel.Title但没有novel.title

Book是基类/超级类,派生类是小说和非小说类

Book的属性由两个派生类继承

两个派生类声明了自己的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM