0

在我的一份申请中,我宣布了一份清单

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));


            }

问题:我可以成功检索这些数组的数据,但我也想检索数组的名称,可以吗?

4

3 回答 3

1

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

一次可能有多个变量指向同一个数组。举个例子,你会期望你在代码中注释掉的那一行写出来pan吗?毕竟,那是指向当前数组变量名。

于 2012-09-13T08:12:06.123 回答
0

编译程序时,源代码中的变量名称会丢失,因此您永远不能这样做。您可以做的是使用 aDictionary而不是 a 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"];
于 2012-09-13T08:35:25.143 回答
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

于 2012-09-13T08:39:26.107 回答