почему listbox1.Items.Add использовать метод Equals моего объекта? - PullRequest
0 голосов
/ 02 января 2012

Я тщательно проверяю метод добавления ListBoxCollection в Windows Forms, во время анализа я обнаружил, что метод «add» вызывает метод Equals в базовом объекте почему этот метод делает это действие?


Я использовал «стек вызовов» и нашел ответ:

Мы вызываем: System.Windows.Forms.ListBox.ObjectCollection.Add (item item)

и будет вызываться: System.Windows.Forms.ListBox.ObjectCollection.AddInternal (item item)

и вызовет: System.Windows.Forms.ListBox.NativeAdd (item item)

и будет вызываться: System.Windows.Forms.ListControl.GetItemText (item item)

, и он будет вызывать: System.Windows.Forms.Formatter.FormatObject (значение объекта, System.Type targetType, System.ComponentModel.TypeConverter sourceConverter, System.ComponentModel.TypeConverter targetConverter, строковый формат string, форматирование объекта System.IFormatVid для объекта , объект dataSourceNullValue)

и будет вызываться: System.Windows.Forms.Formatter.IsNullData (значение объекта, объект dataSourceNullValue)

и, наконец, вызовет: object.Equals (объект objA, объект objB)

который этот метод делает мой метод равным тоже Выполнить:

WindowsFormsApplication1.Student.Equals (объект obj)

, а последний параметр, который будет отправлен в метод My Equals (как obj), является объектом DBNULL! что такое DBNULL?

1 Ответ

2 голосов
/ 02 января 2012

Потому что он должен уметь знать, какой предмет вызывает события.Если объекты являются одним и тем же объектом, выделение, редактирование, удаление становятся сложными и запутанными.

...