![](/img/trans.png)
[英]I am new to programming and C#, I am getting the wrong output for school homework
[英]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 ...方法中。
novel
是Fiction
对象。 由于Fiction
从Book继承,因此Fiction
具有Title
和Author
属性。 所以呢
novel.Title = Console.ReadLine();
正在做的是从控制台读取输入并将其存储在title
您的属性novel
通过对象Title
属性。
您应该看一下《 属性教程》 。
Title
, Author
和Level
是在该块的开头创建的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();
您将拥有三个“标题”字段,但是您将如何指出您所指的是哪一个呢? 这就是前缀的含义。 在上面的例子,比如,你可以参考Title
中novel3
使用novel3.Title
。
您的问题尚不清楚,但我想您是在询问novel.title
和novel.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.