2013-04-08 93 views
2

嗨我嘗試實現2鍵字典,當我編譯此代碼給我的消息:並非所有的代碼路徑在System.Collections.IEnumerable.GetEnumerator()返回值。我嘗試在許多地方添加return語句,但它不起作用。任何想法有什麼不對?IDictionary自己的實現IEnumerator

public IEnumerator<MultiKeyStruct<PK,SK,V>> GetEnumerator() 
    { 
     foreach (var primaryKey in primarykeys) 
     { 
      foreach (var secondaryKey in primarykeys[primaryKey.Key]) 
      { 
       var returnItem = new MultiKeyStruct<PK,SK,V>(primaryKey.Key, secondaryKey.Key, secondaryKey.Value); 
       yield return returnItem; 
      } 
      yield return default(MultiKeyStruct<PK, SK, V>); 
     } 
     yield return default(MultiKeyStruct<PK,SK,V>); 
    } 

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() 
    { 
     GetEnumerator(); 
    } 
+3

在附註上;很確定你想刪除第一個塊中的第二個和第三個yield return語句;你只需要一個,最內層的實際返回實物的那個。另外兩個將在您的序列中放置空白項目。 – Servy 2013-04-08 20:05:46

回答

5

你的第二個GetEnumerator方法的主體應該是:

return GetEnumerator(); 

return是很重要的。