如何在变量名C#中使用变量

时间:2019-04-16 21:31:49

标签: c# string variables

我有3个变量,分别为gxposgyposgzpos。我有一个名为moove()的方法,带有一个string自变量轴(x,y或z),我希望能够更改两个变量(gxpos,gypos,gzpos)。

在代码示例中,我通过此?表示了我希望轴变量的位置。

public void moove(string axis)
{ 
    g(?)pos = (?)pos + trkSizeStep.Value;
    if (g(?)pos != m(?)pos || -g(?)pos != m(?)pos)
    {
        (?)pos = g(?)pos;
        port.WriteLine(axis + (?)pos);
        lblpos(?).Text = (?)pos.ToString();
    }
    else
    {
        errorLimit(axis, 1);
    }
}

2 个答案:

答案 0 :(得分:0)

在C#中,如果没有反思或使用T4 Templates之类的外部工具,这是不可能的。

但是,您也许可以通过使用数组来解决此问题:

int[] gpos = new int[] { gxpos, gypos, gzpos };
int[] pos = new int[] { xpos, ypos, zpos };
int[] mpos = new int[] { mxpos, mypos, mzpos };
string axisNames = new string[] { "x", "y", "z" };

public void moove(int axis)
{
    gpos[axis] = pos[axis] + trkSizeStep.Value;
    if (gpos[axis] != mpos[axis] || -gpos[axis] != mpos[axis])
    {
        pos[axis] = gpos[axis];
        port.WriteLine(axisNames[axis] + pos[axis]);
        lblpos[axis].Text = pos[axis].ToString();
    }
    else
    {
        errorLimit(axisNames[axis], 1);
    }
}

或更妙的是,利用Vector<T>和朋友

答案 1 :(得分:0)

使用字典:

var gpos = new Dictionary<string, int> { { "x", 0 }, { "y", 0 }, { "z", 0 } };
var mpos = new Dictionary<string, int> { { "x", 0 }, { "y", 0 }, { "z", 0 } };
var pos = new Dictionary<string, int> { { "x", 0 }, { "y", 0 }, { "z", 0 } };
var lblpos = new Dictionary<string, Label> { { "x", lblxpos }, { "y", lblypos }, { "z", lblzpos } };

public void moove(string axis)
{
    gpos[axis] = pos[axis] + trkSizeStep.Value;
    if (gpos[axis] != mpos[axis] || -gpos[axis] != mpos[axis])
    {
        pos[axis] = gpos[axis];

        port.WriteLine(axis + pos[axis]);

        lblpos[axis].Text = pos[axis].ToString();

    }
    else
    {
        errorLimit(axis, 1);
    }
}