在this.
之后我必须选择作者或作者?其他问题是什么意味着这些选项旁边的图标有一个“扳手”而另一个有两个图标类似于长块更多其他Little我不知道什么是Little和那些图标是什么意思?如果我想在同一个类中使用第二个构造函数,它是一个没有参数的构造函数,那么可以使构造函数像图像之后的代码一样吗?
下一个代码中的其他问题没有参数的以下构造函数可以吗?或者可以这样做,或者做那项任务是荒谬的吗?如果我不想要特定的默认值,最好设置this.author = null;
或this.author = "";
或必须做什么?
public Book()
{
this.author = Author;
this.title = Title;
}
答案 0 :(得分:4)
你应该了解什么是领域和什么是财产。
字段 - 保留您的数据。
属性 - 它是数据的访问者,他们喜欢方法,但有一些sintacsic shugar。
当你有像Book这样简单的类时,它看起来像这样:
class Book
{
public string Title { get; set; }
public string Author { get; set; }
}
你可以创建这样的新书:
var book = new Book {Author = "Name", Title = "Some Book"};
C#有autoproperty,所以这段代码:
public string Title { get; set; }
与此相同:
private string title;
public string Title
{
get { return title; }
set { title = value; }
}
关于你的问题。如果你喜欢保持你的代码原样。构造函数应该是:
public Book(string title, string author)
{
this.title = title;
this.author = author;
}
基本上,当你声明一些私有字段或方法时,它只适用于你的类。
当您申报公共财产或方法时(公共领域不好,除非绝对必要,否则不要这样做),这适用于您班级的消费者。
答案 1 :(得分:3)
没有任何参数的构造函数称为default constructor。
如果您不想,则不必编写默认构造函数。例如,如果您希望Book book = new Book ();
是语法错误,那么您不应该编写默认构造函数。
如果您确实创建了默认构造函数,那么它应该以某种方式初始化您的类实例,这在您的程序上下文中是有意义的。考虑执行book
后Book book = new Book ();
应该是什么样子。
您可以选择一些书籍和作者作为默认...
public Book()
{
title = "The Hitchhikers Guide to the Galaxy";
author = "Douglas Adams";
}
...或者您可以使用一些值来表明实例尚未真正初始化...
public Book()
{
title = "<<< title not set >>>";
author = "<<< author not set >>>";
}
...或者您可以使用其他合适的价值......
public Book()
{
title = String.Empty;
author = String.Empty;
}
......甚至什么都不做......
public Book()
{
}
答案 2 :(得分:1)
在您的特定代码中,使用this.Author
或this.author
的差异并不大。通常,我更喜欢this.Author
,因为稍后如果在Book.Author
的setter中添加一些代码,您可能还需要运行其他代码,这就是创建setter的原因。
但是你的第二个构造函数是错误的:
this.author = Author;
这相当于:
this.author = this.Author
它会将null
分配给author
。你应该使用构造函数中的参数,就像你的第一个构造函数一样。
答案 3 :(得分:0)
扳手代表一个属性。块代表一个字段。设置字段比设置属性更有效。设置属性需要两个操作而不是一个操作。尽可能设置字段。当属性更改时必须发生某些事情时,设置属性非常有用。您可以将OnChange代码添加到属性的setter中。