在我的一个应用程序中,我声明了一个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));
}
问题:我能够成功检索这些数组的数据,但我还想检索数组的名称,是否可能?
答案 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