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?
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.
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.
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.
Me refería a la memoria que consume el comprobar si la lista es null. ;)
No computa.
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).
Entonces dudo que el mayor de sus problemas sean unos 64 bits. Let the compiler to compile!