我有一些字节存储为数组。当更改任何这些字节值时,我想使用setter调用另一个方法。在下面的示例中,这是一个消息框:
private byte[] numberArps = new byte[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // EEPROM 21
public byte[] NumberArps
{
get
{
MessageBox.Show("Get called");
return this.numberArps;
}
set
{
MessageBox.Show("Set called");
}
}
使用以下代码调用:
numberArps_textbox_1 = NumberArps[1].ToString();
NumberArps[1] = (byte)numberArps_textbox_1;
消息框"被叫"显示。奇怪的是,即使在调试时,也没有达到set {}括号内的代码,该值实际上存储在数组中。
这个错误是由于使用数组getter / setter错误还是实现错误?
答案 0 :(得分:6)
因为您正在设置单个值,而不是直接设置属性。如果你这样设置,Setter只会被调用:
NumberArps = new byte[5];
如果您想控制集合中的更改,请在添加/修改项目时收到通知,请尝试使用ObservableCollection<T>
。