Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Inicializar SIEMPRE las colecciones en C#

Iniciado por XÑA, 24 de Febrero de 2010, 10:20:42 AM

« anterior - próximo »

XÑA

Trabajando en BBDD sabeis que existe un conccepto que es el campo nulo. Muchas veces ocurre que, por ejemplo, no tienen porqué indicar el país, y el valor se deja como nulo. Esto en realidad, por diseño es correcto, sin embargo es fatal para desarrollar. Me explico, resulta que cuando haga un INNER JOIN, tengo que primero analizar si el campo admite valores nulos, y por tanto usar LEFT JOIN. En la aplicación, también tengo que trabajar con la posibilidad de que sea Null, lo que significa controlar if IsNull...

Decidí hace tiempo que el ID=0 se crearía por defecto en todos los campos de este estilo y sería el texto 'Sin Determinar'. De esta forma, NO tengo que preocuparme de si tengo que hacer INNER o LEFT, ni estar recordando si el campo puede o no ser Null.

Bien, pues lo mismo me ocurre en C#. Cuando tengo una lista...¿porqué no obligo a que todas las listas estén inicializadas con un New y simplemente las borro con un Clear cuando tenga que hacerlo? ¿Consumo mucho más memoria? Falso, más consume estar comprobando cada vez if(lista==null) ....

¿Qué os parece la reflexión?

WaaghMan

Yo siempre inicializo las colecciones con New en el constructor y tal, más que nada porque para Xbox no es bueno andar haciendo news por ahí.

A mí me pasa al revés cuando por ejemplo trato con structs, que no tienen el valor null (a menos que se use Nullable), y es una putada saber si ha sido realmente inicializada o no.
Milkstone Studios - Autores de Avatar Ninja!, Little Racers, MotorHEAT y Wool en Xbox Live Indie Games

Vicente

Yo creo que no hay una regla para esto, es decir, si tiene sentido que la lista siempre este inicializada, pues la inicializas en el constructor, y si no tiene sentido que siempre este inicializada pues no... Vamos, no le daria muchas vueltas con argumentos de si es mejor hacer un if o salvar 100 bytes de RAM... A veces tiene sentido usar null y a veces nop, depende de cada caso.

Mars Attacks

Citar¿Consumo mucho más memoria? Falso, más consume estar comprobando cada vez if(lista==null)

El comprobar que lista sea null no te consumirá más memoria, te consumirá más tiempo si acaso.

De todas formas, como ya han dicho, depende de la lógica de cada caso lo que uses y cómo lo uses.

XÑA

Me refería a la memoria que consume el comprobar si la lista es null.  ;)

Mars Attacks


Vicente

Supongo que se refiere a la memoria que ocupa el código que comprueba si la lista es null (pero es solo una suposición :p).

Mars Attacks

Entonces dudo que el mayor de sus problemas sean unos 64 bits. Let the compiler to compile!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.