C# 如何在c语言中将对象添加到字典中
我目前正在尝试创建一个AddBooking方法,该方法使用预订的bookingID作为键,将给定的预订对象添加到预订字典中,但我真的不确定如何操作,我已经开始了,但我不确定首先在括号中放什么,然后在方法中放什么。如有任何帮助或建议,将不胜感激:C# 如何在c语言中将对象添加到字典中,c#,dictionary,C#,Dictionary,我目前正在尝试创建一个AddBooking方法,该方法使用预订的bookingID作为键,将给定的预订对象添加到预订字典中,但我真的不确定如何操作,我已经开始了,但我不确定首先在括号中放什么,然后在方法中放什么。如有任何帮助或建议,将不胜感激: namespace TheatreShows { public class Show { private string title; private Dictionary<int, Booking&g
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 ..?)
{
}
}
}
我可能遗漏了一些东西,因为这似乎太容易了:
public void AddBooking (int bookingID, Booking booking)
{
this.bookings.Add(bookingId, booking);
}
如果这些值可能已经存在,您需要首先测试字典中是否存在该键,然后决定替换它,或者忽略重复项。有两种方法
this.bookings.Add(bookingID, booking);
if (!this.bookings.ContainsKey(bookingId))
this.bookings.Add(bookingID, booking);
或
在第二种情况下,不存在两次添加同一密钥的风险。但是如果有一个条目具有提供的键,那么该值将被新的替换。我不喜欢使用Add,因为如果该键存在,您可能会有一个例外;如果可能存在重复密钥,则应首先检查是否存在。但要添加或更新,请使用索引器
public void AddBooking (int bookingID, Booking booking)
{
bookings[bookingID] = booking;
}
在添加之前使用ContainesKey检查是件好事。为什么不在该实例中执行TryAdd呢?这样,只需查找一次键。有TryGetValue,但我没有看到标准c字典支持的任何TryAdd。@AllanElder,TryAdd随ConcurrentDictionary提供,对于任何标准的语言操作,都没有使用字典的尝试。参考语言文档,而不是这样:将来,在问这样一个基本问题之前,您至少应该尝试查看文档页面。它实际上是方法列表中的第一个方法
public void AddBooking (int bookingID, Booking booking)
{
bookings[bookingID] = booking;
}