【问题标题】:How do you add an object to the dictionary in c#c#中如何将对象添加到字典中
【发布时间】:2014-12-05 14:54:23
【问题描述】:

我目前正在尝试创建一个 AddBooking 方法,该方法将给定的 Booking 对象添加到预订字典中(使用 Booking 的 bookingID 作为键)但我真的不确定该怎么做,我已经开始了但是我不确定首先在括号中放入什么,然后在方法中放入什么。任何帮助或建议将不胜感激:)

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 ..?)
        {

        }
    }
}

【问题讨论】:

标签: c# dictionary


【解决方案1】:

有两种方法

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

this.bookings[bookingID] = booking;

在第二种情况下,两次添加相同的密钥是没有风险的。但是,如果有一个带有提供键的条目,则该值将被新的替换。

【讨论】:

  • 在添加之前使用ContainsKey检查是好事。
  • 你为什么不在那个实例中做一个 TryAdd 呢?这样密钥只会被查找一次。
  • TryGetValue,但我没有看到任何标准c#字典支持的TryAdd
  • @AllanElder, TryAddConcurrentDictionary 一起提供,TryAddDictionary&lt;T,T&gt; 没有提供
【解决方案2】:

我可能遗漏了一些东西,因为这似乎太简单了:

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

如果值可能已经存在,您将需要先测试该键是否存在于字典中并决定替换它,或者忽略重复项。

【讨论】:

    【解决方案3】:
    this.bookings.Add(bookingID, booking);
    

    【讨论】:

      【解决方案4】:

      我不喜欢使用 Add,因为如果密钥存在,您可能会遇到异常;如果可能存在重复键,则应首先检查是否存在。但要添加或更新,请使用索引器。

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

      【讨论】:

        猜你喜欢
        • 2012-11-21
        • 2014-12-16
        • 1970-01-01
        • 1970-01-01
        • 2017-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多