为什么listbox1.Items.Add使用我的对象的Equals方法?

我正在仔细检查Windows窗体ListBoxCollection添加方法,在分析过程中我发现方法“add”调用基础对象中的Equals方法为什么这个方法执行此操作?


我使用过“Call Stack”,我找到了这个答案:

我们调用:System.Windows.Forms.ListBox.ObjectCollection.Add(object item)

它将调用:System.Windows.Forms.ListBox.ObjectCollection.AddInternal(object item)

它将调用:System.Windows.Forms.ListBox.NativeAdd(object item)

它将调用:System.Windows.Forms.ListControl.GetItemText(object item)

它将调用:System.Windows.Forms.Formatter.FormatObject(object value,System.Type targetType,System.ComponentModel.TypeConverter sourceConverter,System.ComponentModel.TypeConverter targetConverter,string formatString,System.IFormatProvider formatInfo,object formattedNullValue,object dataSourceNullValue )

它将调用:System.Windows.Forms.Formatter.IsNullData(object value,object dataSourceNullValue)

最后它将调用:object.Equals(object objA,object objB)

哪个方法也使我的等方法运行:

WindowsFormsApplication1.Student.Equals(object obj)

和将发送到我的等于方法的最后一个参数(作为obj)是一个DBNULL对象! 什么是DBNULL?

因为它需要能够知道哪个项目正在触发事件。 如果对象是完全相同的对象,则选择,编辑,删除变得困难和混乱。