处理对象时更改一个字母的快捷方法

时间:2015-07-26 13:16:03

标签: c# object shortcut public

我已经尝试过寻找解决方案,但是我很新,我甚至不知道从哪里开始。

在公共部分类中,我需要制作26行代码,如下所示,但ObjC的C部分将从A~Z改变。有没有办法有效地做到这一点,没有复制和再次粘贴行,并改变每个C有26次? 我知道我可以花时间做这件事(复制和粘贴26次),但我也觉得必须有更好的方法来解决。

public int[] dn_objC= new int[30]; 
public float[] dtime_objC = new float[30]; 
public float[] ddtime_objC = new float[30];
public int[] dx_objC = new int[30];
public int[] dy_objC = new int[30];
public float[] dxm_objC = new float[30];
public float[] dym_objC = new float[30];
public float[] dsm_objC = new float[30];
public float[] dvx_objC = new float[30];
public float[] dvy_objC = new float[30];
public float[] dv_objC = new float[30];

现在代码没有问题,我只是想知道一个快速的方法来改变C来说A,B,D等。

1 个答案:

答案 0 :(得分:2)

第一项改进是使用multidimensional arrays和/或字典。

但是如果你先创建一个自定义类来保存所有数据会更好:

public class ObjectData {
    public int dn { get; set; }
    public float dtime { get; set; }
    public float ddtime  { get; set; }
    public int dx { get; set; }
    public int dy { get; set; }
    public float dxm { get; set; }
    public float dym { get; set; }
    public float dsm { get; set; }
    public float dvx { get; set; }
    public float dvy { get; set; }
    public float dv { get; set; }
}

然后像这样使用它:

var objects = new Dictionary<char, ObjectData[]>();
objects['A'] = new ObjectData[30];
...

要获取或设置特定值,您可以执行以下操作:

objects['A'][0] = new ObjectData(); // note that you have to instantiate the object first!
objects['A'][0].dn = 14;
Console.WriteLine(objects['A'][0].dn);

为了进一步提高灵活性,请使用List而不是数组。