Digamos que tengo un ComboBox con los valores de «Uno, Dos, Tres»

Como regla general, cuando la prueba condicional eventos basados en la ComboBox selección, sería mejor referencia el ComboBox.SelectedItem o ComboBox.SelectedIndex?

If (ComboBox.SelectedItem = "One") 

o

If (ComboBox.SelectedIndex = 0)

O no tienen una ventaja sobre los otros?

Lo que es más legible en su opinión?
Sólo depende de lo que usted y su equipo a decidir es más legible y mantenible.
Bueno, me estaba preguntando si el procesamiento de sabio, uno funciona mejor que el otro
Problema #1 no es el «==» el operador de igualdad? Creo que está haciendo la asignación de aquí.
no en vb.net 2005, pero sólo lo tratan como pseudocódigo si quieres

OriginalEl autor Stas Bukhtiyarov | 2013-05-09

2 Comentarios

  1. 5

    Me parece SelectedIndex más fácil de usar porque se puede trabajar en un número, y cuando no hay ninguna selección que usted no tiene que manejar el null. SelectedItem podría ser null y usted debe recordar esto cuando se intenta acceder a esa propiedad.

    Generalmente SelectedItem y SelectedIndex se utilizan dentro de un evento SelectedIndexChanged y es fácil olvidarse de la Nada la posibilidad

    Dim curValue = Combo.SelectedItem.ToString() ' <- Possible NullReferenceException'
      .....

    Sin embargo, si sólo estamos hablando de comparación, a continuación, hay una muy pequeña ventaja para SelectedIndex porque no hay ninguna carga y pruebas de una cadena.

    ComboBox b = new ComboBox();
    if(b.SelectedItem == "One")
      Console.WriteLine("OK");
    if(b.SelectedIndex == 0)
      Console.WriteLine("OK");

    Código IL

    IL_0000:  newobj      System.Windows.Forms.ComboBox..ctor
    IL_0005:  stloc.0     // b
    IL_0006:  ldloc.0     // b
    IL_0007:  callvirt    System.Windows.Forms.ComboBox.get_SelectedItem
    IL_000C:  ldstr       "One"
    IL_0011:  bne.un.s    IL_001D
    IL_0013:  ldstr       "OK"
    IL_0018:  call        System.Console.WriteLine
    IL_001D:  ldloc.0     // b
    IL_001E:  callvirt    System.Windows.Forms.ListControl.get_SelectedIndex
    IL_0023:  brtrue.s    IL_002F
    IL_0025:  ldstr       "OK"
    IL_002A:  call        System.Console.WriteLine

    Pero estamos en el ámbito de la micro-optimizaciones y, como se dijo en un comentario, usar lo que es más legible para usted.

    Por qué usted necesita para comprobar Nothing?
    Generalmente SelectedItem se utiliza dentro de un evento SelectedIndexChanged y usted debe recordar que no puede ser null para evitar la NullReferenceExceptio. Estoy de acuerdo en que en el ejemplo anterior no es realmente necesario

    OriginalEl autor Steve

Dejar respuesta

Please enter your comment!
Please enter your name here