C# C如何使用字符串以相同的名称引用预先存在的变量?

C# C如何使用字符串以相同的名称引用预先存在的变量?,c#,string,reference,input,C#,String,Reference,Input,我有一个文本文件,每行都有一个单词,后跟特定的值 例如: texture_menu_label_1 = 0 0 512 512 我想做的是读入该文本,并将其转换为以下命令: texture_menu_label_1 = new int[]{0, 0, 512, 512}; 解析该行并提取构造函数的整数值很简单,但我想知道是否有必要使用文件中的纹理菜单标签字符串引用一个同名的预先存在的变量 是否可以在不手动构造查找表的情况下执行此操作?对泛型或类似类型使用哈希表字典。键是字符串纹理菜单标签,值

我有一个文本文件,每行都有一个单词,后跟特定的值

例如:

texture_menu_label_1 = 0 0 512 512
我想做的是读入该文本,并将其转换为以下命令:

texture_menu_label_1 = new int[]{0, 0, 512, 512};
解析该行并提取构造函数的整数值很简单,但我想知道是否有必要使用文件中的纹理菜单标签字符串引用一个同名的预先存在的变量


是否可以在不手动构造查找表的情况下执行此操作?

对泛型或类似类型使用哈希表字典。键是字符串纹理菜单标签,值是数组。

对于泛型或类似类型使用哈希表字典。关键点是字符串纹理菜单标签,值是数组。

您真的不想这样做。我知道你认为你是这样想的,我记得当我学习编程时,我也有同样的想法,但实际上,你没有

有更好的方法来存储集合值,在您的情况下,这将是一个多维数组或列表。如果不是这样,那么可能是一个哈希表字典

更好的是,如果此数据是“常规”且逻辑连接的,则创建您自己的自定义类型并维护这些数据的集合。你真的不想把你的逻辑和你变量的名字联系起来。。。很乱

这些数据看起来像一个矩形。为什么不干脆维护一本字典呢


你真的不想这么做。我知道你认为你是这样想的,我记得当我学习编程时,我也有同样的想法,但实际上,你没有

有更好的方法来存储集合值,在您的情况下,这将是一个多维数组或列表。如果不是这样,那么可能是一个哈希表字典

更好的是,如果此数据是“常规”且逻辑连接的,则创建您自己的自定义类型并维护这些数据的集合。你真的不想把你的逻辑和你变量的名字联系起来。。。很乱

这些数据看起来像一个矩形。为什么不干脆维护一本字典呢


如果你把它包装成一个结构呢

struct TextureMenu
{
  string MenuString;
  int[] Values;
}

然后,不直接处理这两种类型,只处理结构。

如果将其封装在结构中会怎么样

struct TextureMenu
{
  string MenuString;
  int[] Values;
}

而不是直接处理任何一种类型,您只需处理Stutt.< /P>

,在尝试实现一个答案之前,请考虑为什么要这样做,以及是否有更好的解决方案。

class Data
{
    public int[] texture_menu_label_1;
    ...
}
我建议使用字典将数据按名称存储为字符串

dataDictionary["texture_menu_label_1"] = new int[] { ... };
另一种方法是对字段使用单独的类,因为可以通过名称访问字段。不过,您可能会遇到性能问题,这绝对不是最佳解决方案

class Data
{
    public int[] texture_menu_label_1;
    ...
}
可以使用反射来设置字段值。大概是这样的:

typeof(Data).GetField("texture_menu_label_1").SetValue(data, new int [] { ... });

在尝试实现答案之前,请考虑为什么要这样做,以及是否有更好的解决方案。

class Data
{
    public int[] texture_menu_label_1;
    ...
}
我建议使用字典将数据按名称存储为字符串

dataDictionary["texture_menu_label_1"] = new int[] { ... };
另一种方法是对字段使用单独的类,因为可以通过名称访问字段。不过,您可能会遇到性能问题,这绝对不是最佳解决方案

class Data
{
    public int[] texture_menu_label_1;
    ...
}
可以使用反射来设置字段值。大概是这样的:

typeof(Data).GetField("texture_menu_label_1").SetValue(data, new int [] { ... });

这将更好地使用多维数组实现:更快、更安全、更易于维护,…这将更好地使用多维数组实现:更快、更安全、更易于维护。。。