0

我需要声明一个名称与字符串匹配的变量。

这是我需要工作的,但实际上它使用名称的新表达式实例进行编译"s"(我需要它采用存储在字符串 s 中的名称)我该如何解决这个问题?

代码:

foreach (string s in StringArray)
            {
                if (SomeDifferentArray.Contains(s) != true)
                {
                    Expression s = new Expression(); 
                }
            }

我需要为 中的每个字符串创建一个新的表达式实例StringArray,并且每个表达式都需要根据字符串所包含的文字进行命名。

4

2 回答 2

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();
    }
}

此循环完成后,对于soriginal 中的任何字符串SomeArray,您都可以myExpressionDict[s]获取其关联Expression对象。

在 C# 中,这种结构称为“字典”。根据您的编程语言或库,同样的数据结构也可能有“map”或“hash”的名称。例如,在 Java 集合框架中它被称为 Map,在 Ruby 中它们使用术语哈希,而在 Python 中它使用名称字典(或简称 dict)。

于 2013-01-13T03:39:45.143 回答
0

您可以使用地图或字典。不完全是您要问的,但要简单得多。

于 2013-01-13T03:40:05.773 回答