【发布时间】:2013-12-29 16:05:36
【问题描述】:
我创建了一个类,该类具有一个名为 BagsOfFeed 的 int 变量的自动属性。我添加了一个自动属性以防止从类外部更改值。
我只在设置了NumberOfCows 属性时才使用另一个属性来计算BagsOfFeed。
当我将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;
}
}
}
}
这是表单代码
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 属性或索引器“cow_calculator1.Farmer.BagsOfFeed”分配给 -- 它是只读的(“第 38 行”“第 17 列”牛计算器1)
【问题讨论】:
标签: c# properties encapsulation