2014-01-23 125 views
0

我試圖編寫一個方法,返回一個字典,但它似乎最終是空的。 你能找出我做錯了什麼嗎?C#返回字典

當我點擊按鈕來搜索一個鍵,它給出了錯誤:詞典中沒有鍵。

class Person 
    { 
     public int PersNr { get; set; } 
     public string Name { get; set; } 
     public string BioPappa { get; set; } 
     public Adress Adress { get; set; } 


     public static Dictionary<int, Person> Metod() 
     { 
      var dict = new Dictionary<int, Person>(); 

      dict.Add(870603, new Person 
      { 
       Name = "Jonathan", 
       PersNr = 870603, 
       BioPappa = "Jarmo", 
       Adress = new Adress 
       { 
        Land = "Sverige", 
        PostNr = 73249, 
        Stad = "Arboga" 
       } 
      }); 

      dict.Add(840615, new Person 
      { 
       Name = "Lina", 
       PersNr = 840615, 
       BioPappa = "Erik" 
      }); 
      return dict; 

     } 



namespace WindowsFormsApplication148 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 


     } 



     private void button1_Click(object sender, EventArgs e) 
     { 

      Person.Metod(); 


      var person = myDic[int.Parse(textBoxSok.Text)]; 




      listBox1.Items.Add(person.Name); 
      listBox1.Items.Add(person.PersNr); 
      listBox1.Items.Add(person.BioPappa); 
      listBox1.Items.Add(person.Adress.Stad); 
      listBox1.Items.Add(person.Adress.PostNr); 
      listBox1.Items.Add(person.Adress.Land); 




     } 
+2

什麼是myDic?它初始化的地方? – wudzik

+1

不應該是'var myDic = Person.Metod();'? – Andrei

回答

2

當你打電話給你的方法(請使用更有意義和更容易混淆的名字),你需要接受然而,你還沒有表現出所有的代碼,因爲它的工作

private void button1_Click(object sender, EventArgs e) 
    { 

     Dictionary<int, Person> myDic = person.Metod(); 
     var person = myDic[int.Parse(textBoxSok.Text)]; 
     ....... 

的結果,如你的問題所示,代碼不能編譯。我想你有一個地方聲明並初始化變量myDic,因爲你需要在表單的不同部分使用它。由於調用Metod將本地變量myDic重新初始化爲方法調用返回的字典,因此可以稍微進行分析。

+0

太棒了!謝謝 ! –

2
private void button1_Click(object sender, EventArgs e) 
    { 
     //WRONG 
     Person.Metod(); 

您執行一個方法,但不要將結果賦值給任何東西。

+0

感謝您的參與! –