2012-01-02 3 views
-2

Windows Forms ListBoxCollection을 면밀히 조사하고 있는데, 분석 중에 메서드를 추가하면 기본 개체에 Equals 메서드가 "추가"라는 메서드가 있다는 것을 알았습니다. 왜이 메서드에서이 작업을 수행합니까?왜 listbox1.Items.Add는 내 개체의 Equals 메서드를 사용합니까?


나는 "스택 전화"나는이 대답 찾기가 사용해 본 적이 :

우리는 전화 : System.Windows.Forms.ListBox.ObjectCollection.Add (대상 항목)

을 그리고 것 System.Windows.Forms.ListBox.ObjectCollection.AddInternal (대상 항목)

그것은 호출합니다 : : 전화 System.Windows.Forms.ListBox.NativeAdd (대상 항목)

하고 WI 호출 할 : System.Windows.Forms.ListControl.GetItemText (개체 항목)

및 호출 할 : System.Windows.Forms.Formatter.FormatObject (개체 값, System.Type targetType, System.ComponentModel.TypeConverter sourceConverter, System.ComponentModel.TypeConverter targetConverter, 문자열은 formatString, System.IFormatProvider formatInfo는)

을 dataSourceNullValue 객체, formattedNullValue 객체 그것은 호출합니다 : System.Windows.Forms.Formatter.IsNullData (개체 값을

) dataSourceNullValue 객체 마지막으로 호출합니다 : object.Equals (objA, objB)

이 방법은 내 평등 방법도 실행 확인

: 내 보내기됩니까

WindowsFormsApplication1.Student.Equals (개체 OBJ)

와 마지막 매개 변수는 Equals 메서드 (OBJ와 같은) DBNULL 개체입니다! DBNULL이란 무엇입니까?

+0

Winforms에는 ListBoxCollection 클래스가 없습니다. ListBox.ObjectCollection.Add()는 다음 후보가 될 수 있지만 목록이 정렬되지 않으면 해당 Add() 메서드는 Equals()를 호출하지 않습니다. 호출 스택을보고 거기에 도달했는지 확인하십시오. –

답변

2

이벤트를 발생시키는 항목이 무엇인지 알 수 있어야하기 때문입니다. 객체가 정확히 같은 객체이면 선택, 편집, 삭제가 어렵고 혼란 스럽습니다.

+0

죄송하지만 더 설명 할 수 있습니까? 나는 이해하지 못합니다 : -S –

+0

많은 정보를 제공하지 않았기 때문에 많은 가정을해야합니다. 그러나 객체가 서로 같고 동일하면. 어떤 항목을 제거하고있는 목록에서 해당 개체를 제거하면? 둘 다 하나? 그것들은 동일하기 때문에 혼란스러운 조작입니다. – Joe

+0

괜찮아요! 제거 (객체 obj) 합리적인 방법이지만 추가 (객체 obj) 방법 나는 이유를 아직 이해하지 못합니다! –

관련 문제