Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c语言中将对象添加到字典中_C#_Dictionary - Fatal编程技术网

C# 如何在c语言中将对象添加到字典中

C# 如何在c语言中将对象添加到字典中,c#,dictionary,C#,Dictionary,我目前正在尝试创建一个AddBooking方法,该方法使用预订的bookingID作为键,将给定的预订对象添加到预订字典中,但我真的不确定如何操作,我已经开始了,但我不确定首先在括号中放什么,然后在方法中放什么。如有任何帮助或建议,将不胜感激: namespace TheatreShows { public class Show { private string title; private Dictionary<int, Booking&g

我目前正在尝试创建一个AddBooking方法,该方法使用预订的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 ..?)
        {

        }
    }
}

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

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;
}