0

私の1つのアプリケーションで、1つのリストを宣言しました

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

//以下のコードは、このリストにいくつかの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

プログラムのコンパイル時にソースコード内の変数の名前が失われるため、これを行うことはできません。あなたができることは:の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"];
于 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 に答える