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

このループが終了sしたら、元の の任意の文字列に対して、関連付けられたオブジェクトを取得SomeArrayできます。myExpressionDict[s]Expression

C# では、この構造は「ディクショナリ」と呼ばれます。この同じデータ構造は、プログラミング言語またはライブラリに応じて、「マップ」または「ハッシュ」という名前で呼ばれることもあります。たとえば、Java コレクション フレームワークではマップと呼ばれ、Ruby ではハッシュという用語が使用され、Python ではディクショナリ (または略して dict) という名前で使用されます。

于 2013-01-13T03:39:45.143 に答える
0

Map または Dictionary を使用できます。あなたが求めているものとは正確には異なりますが、もっと単純です。

于 2013-01-13T03:40:05.773 に答える