我创建了一个类,它具有一个名为BagsOfFeed
的int变量的自动属性。我添加了一个自动属性来防止从类外部更改值。
我使用另一个仅在设置BagsOfFeed
属性时计算NumberOfCows
的属性。
我在BagsOfFeed
只读NumberOfCows
时遇到了问题,这会阻止BagsOfFeed
属性将值赋给namespace cow_calculator1
{
class Farmer
{
public Farmer(int numberOfCows, int feedMultiplier)
{
this.feedMultiplier = feedMultiplier;
NumberOfCows = numberOfCows;
}
public int BagsOfFeed { get { return BagsOfFeed; } }
private int feedMultiplier;
public int FeedMultiplier
{
get
{
return feedMultiplier;
}
}
private int numberOfCows;
public int NumberOfCows
{
get
{
return numberOfCows;
}
set
{
numberOfCows = value;
BagsOfFeed = numberOfCows * FeedMultiplier;
}
}
}
}
。
这是类Code
namespace cow_calculator1
{
public partial class Form1 : Form
{
Farmer farmer;
public Form1()
{
InitializeComponent();
farmer = new Farmer(15, 30);
}
private void calculate_Click(object sender, EventArgs e)
{
Console.WriteLine("I need {0} bags of feed for {1} cows", farmer.BagsOfFeed, farmer.NumberOfCows);
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
farmer.NumberOfCows = (int) numericUpDown1.Value;
}
}
}
这是表格代码
{{1}}
这是错误
错误1属性或索引器'cow_calculator1.Farmer.BagsOfFeed'无法分配 - 它是只读的(“第38行”“第17列”牛计算器1)
答案 0 :(得分:1)
您可以将setter的范围设置为私有,并删除返回值。
public int BagsOfFeed { get; private set; }
大致相当于
private int bagsOfFeed;
public int BagsOfFeed {
get { return bagsOfFeed; }
private set { bagsOfFeed = value; }
}
或者在第二种格式中,您可以直接设置私有后备存储。