Autor Tema: operador IsNot nothing  (Leído 9275 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado nameless

  • Sv Full Member
  • *
  • Mensajes: 523
operador IsNot nothing
« : enero 11, 2013, 09:56:04 am »
Hola foreros, vengo a ver si me ayudaban a aclarar una duda
estoy comenzando  con visual basic .net y haciendo ejercicios que encuentro en la red , me tope con este en particular que lo que hace es mostrar un color en base a la opcion que uno elige en un listbox

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        With Me.ListBox1.Items
            .Add("red")
            .Add("blue")
            .Add("green")
            .Add("yellow")
            .Add("orange")
            .Add("pink")
            .Add("brown")
            .Add("black")



        End With
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim ColorName As String = CStr(ListBox1.SelectedItem)
        If ColorName IsNot Nothing Then
            Me.TextBox1.BackColor = System.Drawing.Color.FromName(ColorName)
       
        End If
    End Sub
End Class

ahora bien, tengo una duda con respecto al operador IsNot nothing , segun lei es para saber que una variable es nula o no , pero viendo el codigo (ya estaba hecho) me pongo a analizar para este caso de que sirve verificar eso .
En el ejercicio solo menciona que , "Asegúrese de que la variable ColorName contenga algún valor antes de asignársela a la propiedad BackColor del cuadro de texto."
pero con que fines hace eso ?

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14585
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:operador IsNot nothing
« Respuesta #1 : enero 11, 2013, 10:03:35 am »
como que con que fines? si no sabe que color ponerle como le va a poner un color?
lo que esta diciendo es:
SI colorname existe ENTONCES
VALORPUESTO=VALORQUEQUIEROQUESEMIRE.

si no le ha puesto un color que coños va a hacer?

Desconectado nameless

  • Sv Full Member
  • *
  • Mensajes: 523
Re:operador IsNot nothing
« Respuesta #2 : enero 11, 2013, 10:07:04 am »
como que con que fines? si no sabe que color ponerle como le va a poner un color?
lo que esta diciendo es:
SI colorname existe ENTONCES
VALORPUESTO=VALORQUEQUIEROQUESEMIRE.

si no le ha puesto un color que coños va a hacer?

es que luego probando , modifique un poco el codigo agregando una valor nulo en los colores y agregando un else al if de abajo

.Add("black")
.add("")



        End With
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim ColorName As String = CStr(ListBox1.SelectedItem)
        If ColorName IsNot Nothing Then
            Me.TextBox1.BackColor = System.Drawing.Color.FromName(ColorName)
       else
           msgbox("no hay color")
       
        End If
    End Sub
End Class

pero nunca llega al else cuando selecciono el valor nulo de los colores

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14585
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:operador IsNot nothing
« Respuesta #3 : enero 11, 2013, 10:09:25 am »
es que luego probando , modifique un poco el codigo agregando una valor nulo en los colores y agregando un else al if de abajo

.Add("black")
.add("")



        End With
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim ColorName As String = CStr(ListBox1.SelectedItem)
        If ColorName IsNot Nothing Then
            Me.TextBox1.BackColor = System.Drawing.Color.FromName(ColorName)
       else
           msgbox("no hay color")
       
        End If
    End Sub
End Class

pero nunca llega al else cuando selecciono el valor nulo de los colores
nope. nunca va a llegar. mira bien el codigo. todas las posibilidades de ocurrencias se solucionan con el if original. ese valor VACIO no es igual a un valor NULO.

Desconectado murraybozinsky

  • Sv Jr.
  • **
  • Mensajes: 54
Re:operador IsNot nothing
« Respuesta #4 : enero 11, 2013, 10:10:24 am »
eso esta como cuando una vez le pregunté a mi profesor de filosofía:
profesor, ¿y para que sirve estudiar filosofía?, y  enfrente de todos los de la clase:
respondió .- primeramente para dejar de hacer preguntas estúpidas como esa.
jejeje, sin ofender, es normal, obviamente estas comenzando en esa área.
y si sirve para que no genere una excepción de error en caso que ColorName este null, otra cosa podría
ser controlar la excepción con un try catch.

Desconectado nameless

  • Sv Full Member
  • *
  • Mensajes: 523
Re:operador IsNot nothing
« Respuesta #5 : enero 11, 2013, 10:12:33 am »
como que con que fines? si no sabe que color ponerle como le va a poner un color?
lo que esta diciendo es:
SI colorname existe ENTONCES
VALORPUESTO=VALORQUEQUIEROQUESEMIRE.

si no le ha puesto un color que coños va a hacer?

pues mi duda surgia ya que , en un listbox con colores previamente cargados , la variable siempre tendra un valor por esocger , nunca sera nula por decirlo asi , por eso para este ejemplo no le miraba sentido que comprobara si era nula

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14585
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:operador IsNot nothing
« Respuesta #6 : enero 11, 2013, 10:15:53 am »
pues mi duda surgia ya que , en un listbox con colores previamente cargados , la variable siempre tendra un valor por esocger , nunca sera nula por decirlo asi , por eso para este ejemplo no le miraba sentido que comprobara si era nula
eso se llama buenas prácticas de programación. lo PRIMERO que tenes que evitar son excepciones no manejadas, o dicho en modo caite, asegurate de arreglar todos los posibles cagues. vas a entenderlo mejor cuando programes orientado a objetos y programes métodos y procedimientos que dependen de otros. y ojo que ese es un control de errores bien elemental.
« Última Modificación: enero 11, 2013, 10:17:59 am por g00mba »

Desconectado nameless

  • Sv Full Member
  • *
  • Mensajes: 523
Re:operador IsNot nothing
« Respuesta #7 : enero 11, 2013, 10:18:27 am »
eso esta como cuando una vez le pregunté a mi profesor de filosofía:
profesor, ¿y para que sirve estudiar filosofía?, y  enfrente de todos los de la clase:
respondió .- primeramente para dejar de hacer preguntas estúpidas como esa.
jejeje, sin ofender, es normal, obviamente estas comenzando en esa área.
y si sirve para que no genere una excepción de error en caso que ColorName este null, otra cosa podría
ser controlar la excepción con un try catch.

Pues de estupida no le veo nada a la pregunta , ya que en varias pagina que he buscado informacion de ese operador da unas respuestas bien fumadas acerca de lo que es el operador y para que sirve , por eso queria simplificar un poco mas la respuesta de saber como funciona el IsNot Nothing y en esete ejercicio en particular no le miraba mucho sentido , pero gracias por tu respuesta.

Desconectado nameless

  • Sv Full Member
  • *
  • Mensajes: 523
Re:operador IsNot nothing
« Respuesta #8 : enero 11, 2013, 10:20:04 am »
eso se llama buenas prácticas de programación. lo PRIMERO que tenes que evitar son excepciones no manejadas, o dicho en modo caite, asegurate de arreglar todos los posibles cagues. vas a entenderlo mejor cuando programes orientado a objetos y programes métodos y procedimientos que dependen de otros. y ojo que ese es un control de errores bien elemental.

que valioso aporte este post , muchas gracias en serio que eso de las buenas practicas quiza me faltaba verlo asi .

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:operador IsNot nothing
« Respuesta #9 : enero 11, 2013, 11:07:07 am »
es que luego probando , modifique un poco el codigo agregando una valor nulo en los colores y agregando un else al if de abajo

.Add("black")
.add("")



        End With
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim ColorName As String = CStr(ListBox1.SelectedItem)
        If ColorName IsNot Nothing Then
            Me.TextBox1.BackColor = System.Drawing.Color.FromName(ColorName)
       else
           msgbox("no hay color")
       
        End If
    End Sub
End Class

pero nunca llega al else cuando selecciono el valor nulo de los colores

tu error esta aquí:

Citar
es que luego probando , modifique un poco el codigo agregando una valor nulo en los colores y agregando un else al if de abajo
Citar
.add("")

En programación nulo no es igual a "", nulo es nulo; por eso obviamente nunca aparece el msgbox



respecto a tu pregunta inicial, de que sirve validar si es nulo, sólo le vas a ver utilidad, agregando al listbox un valor NULO y quitarle el if a tu función..

o intenta hacer esto

 Me.TextBox1.BackColor = System.Drawing.Color.FromName("")
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14585
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:operador IsNot nothing
« Respuesta #10 : enero 11, 2013, 11:09:53 am »
En programación nulo no es igual a "", nulo es nulo; por eso obviamente nunca aparece el msgbox
I just said that ¬_¬

Desconectado nameless

  • Sv Full Member
  • *
  • Mensajes: 523
Re:operador IsNot nothing
« Respuesta #11 : enero 11, 2013, 11:37:15 am »
tu error esta aquí:

En programación nulo no es igual a "", nulo es nulo; por eso obviamente nunca aparece el msgbox



respecto a tu pregunta inicial, de que sirve validar si es nulo, sólo le vas a ver utilidad, agregando al listbox un valor NULO y quitarle el if a tu función..

o intenta hacer esto

 Me.TextBox1.BackColor = System.Drawing.Color.FromName("")

gracias , eso he andado buscando como (para fines didacticos) como se podia representar un valor nulo en la lista para llegar al else que puse , pero voy a probar la forma que me recomiendas a ver como funciona.

Otra cosa , como estoy cambiando y probando cosas , agregue una linea para que ademas del color muestre el nombre del color

Dim ColorName As String = CStr(ListBox1.SelectedItem)
        If ColorName IsNot Nothing Then
            Me.TextBox1.BackColor = System.Drawing.Color.FromName(ColorName)
            Me.TextBox1.Text = CStr(ColorName)

pero estoy viendo y buscando información de como puedo hacer para darle un tipo de fuente , color y tamaño personalizado al texto (nombre del color) que salga en el textbox, alguien me puede sugerir una idea, probe con el system.drawing.font pero no logro hacer que me tire algo

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:operador IsNot nothing
« Respuesta #12 : enero 11, 2013, 12:22:48 pm »
cambialo en tiempo diseño y mira el código que genera, empieza a conocer la estructura de archivos de .Net....
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado nameless

  • Sv Full Member
  • *
  • Mensajes: 523
Re:operador IsNot nothing
« Respuesta #13 : enero 11, 2013, 01:10:46 pm »
cambialo en tiempo diseño y mira el código que genera, empieza a conocer la estructura de archivos de .Net....

gracias por la idea , no se me habia ocurrido , solo una cosa mas ... para ver el codigo que genera como lo puedo hacer , ya que el textbox que es donde muestro el texto , al darle click derecho y ver codigo pues me muestra solo el codigo que ya tenia

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:operador IsNot nothing
« Respuesta #14 : enero 12, 2013, 10:28:26 am »
pues mi duda surgia ya que , en un listbox con colores previamente cargados , la variable siempre tendra un valor por esocger , nunca sera nula por decirlo asi , por eso para este ejemplo no le miraba sentido que comprobara si era nula

Creo que lo demas ya te lo han contestado de forma correcta excepto esta.

En realidad aunque la lista este con colores previamente cargados, lo que el codigo esta revisando es cual esta seleccionado, en este caso existe la posibilidad de que al inicio del programa ningun color tenga seleccion, lo cual seria seleccion = nula.

Por eso a menos que tengas una seleccion default, el caso nulo seria tratar de obtener la seleccion actual para un listview sin nada seleccionado.

Ahora bien, en el caso puntual de tu codigo si es imposible obtener un nulo porque se chequea en el evento SelectedIndexChanged que solo podria dispararse al seleccionar algun valor.

Sin embargo como decia g00mba, es buena practica de programacion porque en el futuro podrias implementarle un boton "borrar colores" que dejaria la lista vacia y que generaria una excepcion si no se verificara el valor nulo.

Desconectado nameless

  • Sv Full Member
  • *
  • Mensajes: 523
Re:operador IsNot nothing
« Respuesta #15 : enero 14, 2013, 10:49:57 am »
Creo que lo demas ya te lo han contestado de forma correcta excepto esta.

En realidad aunque la lista este con colores previamente cargados, lo que el codigo esta revisando es cual esta seleccionado, en este caso existe la posibilidad de que al inicio del programa ningun color tenga seleccion, lo cual seria seleccion = nula.

Por eso a menos que tengas una seleccion default, el caso nulo seria tratar de obtener la seleccion actual para un listview sin nada seleccionado.

Ahora bien, en el caso puntual de tu codigo si es imposible obtener un nulo porque se chequea en el evento SelectedIndexChanged que solo podria dispararse al seleccionar algun valor.

Sin embargo como decia g00mba, es buena practica de programacion porque en el futuro podrias implementarle un boton "borrar colores" que dejaria la lista vacia y que generaria una excepcion si no se verificara el valor nulo.

mas claro que el agua imposible , que buena explicación me diste y ahora entiendo mejor ..... quiza muchas veces hay detalles que se me escapan como el primero que mencionaste (( "existe la posibilidad de que al inicio del programa ningun color tenga seleccion, lo cual seria seleccion = nula.")) q hasta con las explicaciones de uds las comprendo mejor .

gracias