设置不在C#.NET中使用getter / setter调用数组

时间:2017-03-29 20:31:09

标签: c# .net wpf

我有一些字节存储为数组。当更改任何这些字节值时,我想使用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错误还是实现错误?

1 个答案:

答案 0 :(得分:6)

因为您正在设置单个值,而不是直接设置属性。如果你这样设置,Setter只会被调用:

NumberArps = new byte[5];

如果您想控制集合中的更改,请在添加/修改项目时收到通知,请尝试使用ObservableCollection<T>