2016-04-08 19 views
6

Ich habe eine Methode, die eine Hash-Tabelle akzeptiert, und ich bin mit concat es bis zum Ende eines anderen Hash-Tabelle hinzuzufügen, aber ich bin immer diese Fehlermeldung:hinzufügen Hashtable eines anderen zu beenden Hashtable

The type arguments for method System.Linq.Enumerable.Concat<TSource>(this System.Collections.Generic.IEnumerable<TSource>, System.Collections.Generic.IEnumerable<TSource>)' cannot be inferred from the usage.

I don verstehe nicht, was das bedeutet oder was ich falsch gemacht habe. Meine Methode sieht so aus:

public void resetCameras(Hashtable hashTable) 
{ 
    Hashtable ht = new Hashtable(); 

    ht.Add("time", 2.0f); 
    ht.Add("easeType","easeInOutQuad"); 
    ht.Add("onupdate","UpdateSize"); 
    ht.Add("from",size); 
    ht.Add("to",5.0f); 

    if(hashTable != null) { 
     ht = ht.Concat(hashTable); 
    } 

    iTween.ValueTo(gameObject,ht); 
} 

Ich hoffe, Sie können helfen, meinen Fehler zu erklären, immer noch neu in C#.

+0

Wenn Sie eine HashTable aufzählen, du * nur * die aufzuzählen ** Tasten **. Grundsätzlich sagt LINQ Ihnen, dass Sie * Werte * für die Schlüssel benötigen, die Sie "concat''ing". – Tersosauros

+1

Beachten Sie auch, dass HashTable/Dictionary kein Ordnungskonzept hat, also "add to the end" ist wirklich keine gültige Operation für diese Typen. –

+0

@Tersosauros also muss ich eine for-Schleife verwenden? In diesem Fall könnte ich nicht einfach ".Add" für jede Taste der anderen verwenden? – WDUK

Antwort

6

Leider gibt es keinen einfachen Weg zu merge/concat zwei HashTables, Sie müssen es auf traditionelle Weise machen Schleifen durch jeden Eintrag.

foreach (DictionaryEntry entry in hashTable) 
{ 
    if(!ht.ContainsKey(entry.Key)) 
    { 
     ht.Add(entry.Key, entry.Value); 
    } 
} 

// rest of the logic