首页 > 解决方案 > 如何将比较逻辑实现到数组的集合属性中

问题描述

int maxHeight;
int minHeight;

public int [ , ] Heights
{
    get;
    set
    {
      if(value > maxHeight)
      {
        print("Max Height Changed !");
      }   

      if(value < minHeight)
      {
        print("Min Height Changed !");
      }
    }
}

当索引中的值发生变化时,我想为数组值实现立即比较逻辑。如果新值大于最近的最大值,或者小于最近的最小值,则必须提示。但是,如果不创建自定义方法,我找不到将其直接实现到 set 属性中的方法。

标签: c#arraysdata-structuresproperties

解决方案


在 setter 中,value是要为属性设置的值。所以在这种情况下,value将是一个int[,],不能直接与单个 比较int。如果您想捕获数组中值的变化则无法使用数组属性本身的 setter 来执行此操作。换句话说,只有在您设置整个数组属性的值时才会调用您的 setter(即使您将其设置为已设置 tp 的同一数组)。

简而言之,没有办法捕捉到二维数组的变化。您将封装数组并实现自己的索引器,将自定义逻辑添加到索引值的设置中。


推荐阅读