2014-12-05 29 views
-5

我目前正在嘗試創建一個AddBooking方法,它將一個給定的Booking對象添加到預訂字典中(使用Booking的bo​​okingID作爲鍵),但我真的不確定如何去做,我已經開始了,但我不確定首先要把什麼放在括號中,然後再用什麼方法。任何幫助或提醒,將不勝感激:)如何添加一個對象到字典中的c#

namespace TheatreShows 
{ 
    public class Show 
    { 
     private string title; 
     private Dictionary<int, Booking> bookings; 

     public string Title 
     { 
      get { return title; } 
      set { title = value; } 
     } 

     public Show(string title) 
     { 
      this.title = title; 
      this.bookings = new Dictionary<int, Booking>(); 
     } 

     public void AddBooking (int bookingID, Booking ..?) 
     { 

     } 
    } 
} 
+1

對於任何標準語言操作指語言文檔而不是SO:http://msdn.microsoft.com/en-us/library/k7z0zy8k%28v=vs.110%29.aspx – PiotrWolkowski 2014-12-05 15:01:36

+0

在將來你至少應該在提出這樣一個基本問題之前先看看doc頁面。它實際上是方法列表中的第一個方法[在字典文檔中](http://msdn.microsoft.com/en-us/library/xfhwa508%28v=vs.110%29.aspx) – pquest 2014-12-05 15:01:45

回答

1

我可能失去了一些東西,因爲這似乎太容易了:

public void AddBooking (int bookingID, Booking booking) 
{ 
    this.bookings.Add(bookingId, booking); 
} 

如果值可能已經存在,你將要測試,如果該鍵存在在字典中,並決定替換它,或者忽略重複。

0
this.bookings.Add(bookingID, booking); 
2

有兩種方式

if (!this.bookings.ContainsKey(bookingId)) 
    this.bookings.Add(bookingID, booking); 

this.bookings[bookingID] = booking; 

在第二種情況下,沒有添加相同的鍵兩次的風險。但是,如果有提供密鑰的條目,則該值將被新條目取代。

+0

你有一個很好的點這裏 – Steve 2014-12-05 14:59:33

+0

添加前使用'ContainsKey'檢查是件好事。 – Habib 2014-12-05 15:01:12

+0

爲什麼你不會在這種情況下做一個TryAdd?這樣,鑰匙只能擡頭一次。 – 2014-12-05 15:03:01

0

我不喜歡使用添加,因爲如果密鑰存在,您可以有異常;如果重複鍵是可能的,你應該首先檢查存在。但要添加或更新,請使用索引器。

public void AddBooking (int bookingID, Booking booking) 
{ 
    bookings[bookingID] = booking; 
}