数组更改事件

Jai*_*Oro 4 c# arrays

我有一个名为的数组属性Value

public string[,] Value { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想Save()在数组(不是整个数组)的任何值发生更改时调用该方法。

有没有简单的方法来实现它?

ear*_*ess 5

并不真地。数组是非常原始的类型,当事情发生变化时不会通知你。

您能做的最好的事情是创建一个自定义类型,它的作用类似于 2D 数组,但此外,它会在元素发生更改时引发一个事件。然后,您当前的班级将订阅此事件并调用Save()

一些补充意见:

  • 您可能不想公开 setter,这允许人们更改您指向的数组。您可能只想公开 getter,因此它们可以更改值,而不是整个数组。
  • 我提到的可能已经有一种类型,我不知道。
  • 如果您无论如何要更改 API,则在您的类上公开索引器可能更有意义,然后在调用Save()索引器的 setter 时调用。见下文。
    公共字符串 this[int x, int y] 
    { 
        得到 { 返回 this.localArray[x,y]; }
        放 
        { 
            this.localArray[x,y] = 值;
            this.Save();
        }
    }