代码之家  ›  专栏  ›  技术社区  ›  Jeppe Christensen

通过对象中的属性名递增

  •  0
  • Jeppe Christensen  · 技术社区  · 7 年前

    我有以下目标:

    namespace BluetoothExample
    {
        public class Assay
        {
            public double Band_1 //Vis450
            {
                get;
                set;
            }
            public double Band_2 //Vis500
            {
                get;
                set;
            }
            public double Band_3 //Vis550
            {
                get;
                set;
            }
            public double Band_4 //Vis570
            {
                get;
                set;
            }
        }
    }
    

    public Populate()
    {
        int _i = 0;
        double[] nirData = new double[4];
            MyDevice.Characteristic.ValueUpdated += (sender, e) =>
            {
                nirData[_i] = BitConverter.ToDouble(e.Characteristic.Value, 0);
                _i++;
            };
        Assay assay = new Assay();
        assay.Band_1 = nirData[0];
        assay.Band_2 = nirData[1];
        assay.Band_3 = nirData[2];
        assay.Band_4 = nirData[3];
    }
    

    我想知道是否有可能把整个事情都安排在 MyDevice.Characteristic.ValueUpdate 方法代替?我的想法是,应该可以这样递增和填充对象的属性:

    string name = "assay.Band_" + _i;
    name = BitConverter.ToDouble(e.Characteristic.Value, 0);
    

    这显然是错误的,但它在某种程度上证明了我的想法。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Ashkan Mobayen Khiabani    7 年前

    把你的乐队做成一个阵列,或者列个清单:

    public class Assay
    {
         public double[] Band 
         {
              get;
              set;
         }
    }
    

    然后你可以简单地分配它如下:

    public Populate()
    {
        int _i = 0;
        double[] nirData = new double[4];
            MyDevice.Characteristic.ValueUpdated += (sender, e) =>
            {
                nirData[_i] = BitConverter.ToDouble(e.Characteristic.Value, 0);
                _i++;
            };
        Assay assay = new Assay();
        assay.Band = nirData;
    }