2017-02-14 1 views
4

В чем разница междуВ чем разница между DropDownList.ClearSelection() и DropDownList.SelectedIndex = -1

DropDownList.ClearSelection(); 

и

DropDownList.SelectedIndex = -1; 

при работе с DropDownList?

Редактировать: Мне известны определения, доступные для них в MSDN. Может ли кто-то объяснить различия в реализации/практическом использовании.

ответ

9

Глядя в the source для System.Web.UI.WebControls.ListControl, из которого DropdownList происходит, похоже, установка SelectedIndex фактически вызывает ClearSelection(); и если не -1, он перейдет к выбору элемента.

public virtual void ClearSelection() { 
     for (int i=0; i < Items.Count; i++) 
      Items[i].Selected = false; 
    } 

    public virtual int SelectedIndex { 
     set { 
      ... 
      if ((Items.Count != 0 && value < Items.Count) || value == -1) { 
       ClearSelection(); 
       if (value >= 0) { 
        Items[value].Selected = true; 
       } 
      } 
      ... 
     } 

Edit: так что в ответ на свой вопрос, позвонив ClearSelection() непосредственно бы спасти вас от нескольких (несущественным), если заявления ..

+0

это преимущество дэвы получил после того, как OpenSource кода (Y) –

+1

Для быть справедливым, я использовал рефлектор, потому что я ленив. Но вот [исходный источник из Microsoft] (https://github.com/Microsoft/referencesource/blob/master/System.Web/UI/WebControls/ListControl.cs). – NPras

+0

какой отражатель вы используете? –