我需要声明一个名称与字符串匹配的变量。
这是我需要工作的,但实际上它使用名为"s"
的新表达式实例进行编译(我需要它来获取存储在字符串s中的名称)
我该如何解决这个问题?
代码:
foreach (string s in StringArray)
{
if (SomeDifferentArray.Contains(s) != true)
{
Expression s = new Expression();
}
}
我需要StringArray
中每个字符串的新表达式实例,并且每个表达式都需要根据字符串所包含的字面值进行命名。
答案 0 :(得分:2)
这似乎是映射集合的用例。我自己不是C#用户,但我怀疑字典类是那样的:
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
C#是一种编译语言,因此您无法创建依赖于运行时数据的编译时变量。但是,您可以使用地图样式的数据结构将唯一键对象与单个值对象相关联。在您的情况下,您可以使用它将每个string
与一个Expression
相关联。
Dictionary<string, Expression> myExpressionDict = new Dictionary<string, Expression>();
foreach(string s in StringArray) {
if(!SomeDifferentArray.Contains(s)) {
myExpressionDict[s] = new Expression();
}
}
完成此循环后,对于原始s
中的任何字符串SomeArray
,您可以myExpressionDict[s]
获取其关联的Expression
对象。
在C#中,这种结构被称为&#34;字典。&#34;这个相同的数据结构也可以通过名称&#34; map&#34;或&#34;哈希,&#34;取决于您的编程语言或库。例如,在Java集合框架中,它被称为Map,在Ruby中,它们使用术语hash,而在Python中,它使用名称字典(或简称dict)。
答案 1 :(得分:0)
您可以使用地图或字典。不完全是你要问的,但更简单。