0

これはこの質問の続きです

私のプログラムは、距離値と ID 番号の 2 つの部分で構成される文字列を取得しています。これらを分割して、プログラム内のローカル変数に保存しました。すべての ID 番号はディクショナリに格納され、着信距離値のチェックに使用されます。ただし、デバイスからプログラムに送信される各文字列は、1 つの文字列で渡されることに注意してください。次に私のプログラムがデバイスからその信号を受信すると、以前に存在していた以前のデータが上書きされます。

プログラムに入力される id キーが辞書内のキーと一致する必要がある場合は、辞書キーの隣に保持されている変数を更新する必要があります。ただし、プログラムを実行すると、6 つの異なる値が得られず、同じ値しか得られず、すべて同時に更新されます。

これは私がこれをしようとして書いたすべてのコードです:

    Dictionary<string, string> myDictonary = new Dictionary<string, string>();
string Value1 = "";
string Value2 = "";
string Value3 = "";
string Value4 = "";
string Value5 = "";
string Value6 = "";

void Start() 
{

    myDictonary.Add("11111111", Value1);
    myDictonary.Add("22222222", Value2);
    myDictonary.Add("33333333", Value3);
    myDictonary.Add("44444444", Value4);
    myDictonary.Add("55555555", Value5);
    myDictonary.Add("66666666", Value6);

}

private void AppendString(string message) 
{   
    testMessage = message;

    string[] messages = message.Split(',');

    foreach(string w in messages)
    {   
        if(!message.StartsWith(" "))
            outputContent.text +=  w + "\n";

    }

    messageCount = "RSSI number " + messages[0];
    uuidString = "UUID number " + messages[1];



    if(myDictonary.ContainsKey(messages[1]))
    {
        Value1 = messageCount;
        Value2 = messageCount;
        Value3 = messageCount;
        Value4 = messageCount;
        Value5 = messageCount;
        Value6 = messageCount;
    }
}

プログラムが最初のキー (たとえば 1111111) を受け取ったときに、Value1 のみを更新するようにするにはどうすればよいですか?

入ってくる情報は動的である可能性があるため、できるだけ多くの情報をハード化することは避けたいと思います。

4

2 に答える 2

6

それ以外の

if(myDictonary.ContainsKey(messages[1]))
{
  Value1 = messageCount;
  Value2 = messageCount;
  Value3 = messageCount;
  Value4 = messageCount;
  Value5 = messageCount;
  Value6 = messageCount;
}

使用する

if(myDictonary.ContainsKey(messages[1]))
{
  myDictonary[messages[1]] = messageCount;
}

このようにして、キーmessages[1]を使用してディクショナリ エントリのみを更新し、すべてを更新するわけではありません。

于 2013-11-05T15:50:41.363 に答える
3
if(myDictonary.ContainsKey(messages[1]))
{
    Value1 = messageCount;
    Value2 = messageCount;
    Value3 = messageCount;
    Value4 = messageCount;
    Value5 = messageCount;
    Value6 = messageCount;
}

する必要があります

if(myDictonary.ContainsKey(messages[1]))
    {
        myDictionary[messages[1]] = messageCount;
    }
于 2013-11-05T15:51:59.740 に答える