使用变量值作为数组名称

时间:2018-01-10 12:21:50

标签: c# arrays

我读过其他类似的问题。但是,所有人都使用bash。 IDK关于那种语言的一切。 我想做的事是:

int i=0;   //Value of i will change as I want to use it in loop
string name="c"+i;
double a= name[i]; //The real name of arrays I have declared are: c0[],c1[] etc

它出错:“Project”不包含“name”的定义 那么,我该如何实现这一目标呢?

2 个答案:

答案 0 :(得分:2)

显然,你有一组变量,所有变量都有一个共同的名称,例如: MyVariable1MyVariable2

您应该使用数组,或者在您的情况下使用数组数组,而不是使用这么多类似的变量:

var myVariableArray = new double[][] { c[0], c[1], ... };

现在您可以轻松访问该阵列中的第i个数字:

double a = myVariableArray[i][i];

另外,如果这些变量实际上是您班级中的成员(字段或属性),您还可以使用反射从字符串中获取正确的成员:

var fields = typeof(MyType).GetField(name + i);
double b[];
if(field != null)
    b = (double[]) field.GetValue(instanceOfMyType, null);
else
{
    var prop = typeof(MyType).GetProperty(name + i);
    if(prop != null)
        b = (double[]) prop.GetValue(instanceOfMyType, null);
}
a = b[i];

然而,这样的数据结构是糟糕的设计,你应该使用成员的数组(或列表),而不是有几十个类似的成员。

答案 1 :(得分:1)

你需要一组数组(二维数组),不是吗?

要创建数组数组,请执行以下操作:

test();//call it seperatly not inside any function 

其中SELECT * FROM post,post_meta WHERE post.id=post_meta.post_id , post_meta.id="x"; 是您想要的数组数。

现在你可以使用这样的一些数组填充它:

double[][] twoDArray = new double[][x];

要访问2D数组中的数组,您甚至不需要x,只需直接使用twoDArray[0] = new double[] {1.0, 1.1, 1.2}; twoDArray[1] = new double[] {7.7, 8.8, 9.9}; 即可!

name

或更简单:

i