我正在使用Head First C#书进行练习。
这段代码应该是关于封装的。
class DinnerParty
{
private int NumberOfPeople;
....
public void SetPartyOptions(int people, bool fancy) {
NumberOfPeople = people;
.....
}
public int GetNumberOfPeople() {
return NumberOfPeople;
}
}
在form1
班级
public partial class Form1 : Form
{
DinnerParty dinnerParty;
public Form1()
{
InitializeComponent();
dinnerParty = new DinnerParty() {NumberOfPeople = 5 };
...
这假设有用吗?
Visual Studio向我显示错误。 (由于其保护级别无法访问)
我很陌生。
由于
答案 0 :(得分:1)
答案 1 :(得分:0)
你可以通过写下类似的东西来使用“Fluent interface”的想法:
class DinnerParty
{
private int NumberOfPeople;
....
public DinnerParty SetPartyOptions(int people, bool fancy) {
NumberOfPeople = people;
.....
return this; // Return own instance to allow for further accessing.
}
public int GetNumberOfPeople() {
return NumberOfPeople;
}
}
然后叫它:
public partial class Form1 : Form
{
DinnerParty dinnerParty;
public Form1()
{
InitializeComponent();
dinnerParty = new DinnerParty().SetPartyOptions( 5, true );
...
答案 2 :(得分:0)
NumberOfPeople是私人会员,你不能在课堂上使用它
答案 3 :(得分:0)
NumberOfPeople是私有的,所以它不起作用。这里最好的解决方案是创建公共属性而不是私有字段,或者添加构造函数并在那里初始化该字段。
答案 4 :(得分:0)
不,这不应该工作。我看不到这本书,所以我无法对上下文发表评论。但是:
public int NumberOfPeopoe {get;set;}
是一个合理的解决方法。
答案 5 :(得分:0)
您无法初始化范围(类)之外的私有字段。
将其作为财产。
public int NumberOfPeople { get; set; }
现在,这将有效
dinnerParty = new DinnerParty() { NumberOfPeople = 5 };