如何检索存储在wpf列表中的Array的名称

时间:2012-09-13 08:04:58

标签: wpf

在我的一个应用程序中,我声明了一个List

public List<double[]> pane1 = new List<double[]>();

//下面的代码是在这个列表中添加一些双数组

pane1.Add(imp);

pane1.Add(normal);

pane1.Add(useless);

//下面的代码是从此列表中检索值

            foreach (double[] pan in pane1)
            {
                int diffx = ds.data.Length - pan.Length;
                int pointx = ptx - diffx;

                if (pointx < 0)
                    pointx = 0;


                double tip = pan[pointx];
                tt = tt.Append("\n");
                //tt = tt.Append(pan.ToString());
                tt = tt.Append("\t");
                tt = tt.Append(Math.Round(tip, 2));


            }

问题:我能够成功检索这些数组的数据,但我还想检索数组的名称,是否可能?

3 个答案:

答案 0 :(得分:1)

你要求的是不可能的。您似乎要寻找的“名称”不是“数组的名称”;它只是一个恰好指向数组的变量名称。

一次可能有几个变量指向同一个数组。举个例子,您是否希望在代码中注释掉的行编写pan?毕竟,这是指向当前数组的 a 变量的名称。

答案 1 :(得分:0)

编译程序时,源代码中的变量名称会丢失,因此您无法执行此操作。您可以使用Dictionary代替List

public Dictionary<string, double[]> pane1 = new Dictionary<string, double[]>();

pane1["imp"] = imp;
pane1["normal"] = normal;
pane1["useless"] = useless;

然后,您可以迭代pane1.Values以获取数组而无需关注键(名称),或迭代pane1以获取名称/数组对,或者按名称拉出数组与

var imp = pane1["imp"];

答案 2 :(得分:0)

你指的是这样的东西吗?

using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Reflection;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<double[]> pane1 = new List<double[]>();
            Check(() => pane1);
        }

        static void Check<T>(Expression<Func<T>> expr)
        {
            var body = ((MemberExpression)expr.Body);
            Console.WriteLine("Name is: {0}", body.Member.Name);
        }
    }
}

这将产生以下输出:

  

变量名称为:pane1